home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #2 / Amiga Plus CD - 2004 - No. 02.iso / AmiSoft / Dev / misc / WHDLoad_dev.lha / WHDLoad / Src / qa / qa.asm next >
Encoding:
Assembly Source File  |  2003-12-04  |  69.8 KB  |  2,512 lines

  1. ;*---------------------------------------------------------------------------
  2. ;  :Version.    $Id: qa.asm 1.10 2003/12/04 08:12:03 wepl Exp wepl $
  3. ;---------------------------------------------------------------------------*
  4.  
  5.     INCDIR    Includes:
  6.     INCLUDE    whdload.i
  7.     INCLUDE    whdmacros.i
  8.  
  9.     OUTPUT    "QA.Slave"
  10.     BOPT    O+            ;enable optimizing
  11.     BOPT    OG+            ;enable optimizing
  12.     BOPT    ODg-            ;disable jsr+rts optimizing
  13.     BOPT    w4-            ;disable 64k warnings
  14.     BOPT    wo-            ;disable optimize warnings
  15.     SUPER
  16.     MC68040
  17.  
  18. BASEMEM    = $40000
  19. ;BASEMEMREAL = $41000
  20. ;BASEMEMREAL = $200000
  21.     IFND BASEMEMREAL
  22. BASEMEMREAL = BASEMEM
  23.     ENDC
  24. EXPMEM    = $10000
  25.  
  26. SAVREG    = $200        ;memory to save registers for modified check
  27. HRTMON            ;remove write protection from whdload
  28.  
  29. ;======================================================================
  30.  
  31. _base        SLAVE_HEADER            ;ws_Security + ws_ID
  32.         dc.w    15            ;ws_Version
  33.         dc.w    WHDLF_NoError        ;ws_flags
  34.         dc.l    BASEMEMREAL        ;ws_BaseMemSize
  35.         dc.l    0            ;ws_ExecInstall
  36.         dc.w    _start-_base        ;ws_GameLoader
  37.         dc.w    0            ;ws_CurrentDir
  38.         dc.w    0            ;ws_DontCache
  39.         dc.b    0            ;ws_keydebug = F9
  40.         dc.b    $59            ;ws_keyexit = F10
  41. _expmem        dc.l    EXPMEM            ;ws_ExpMem
  42.         dc.w    _name-_base        ;ws_name
  43.         dc.w    _copy-_base        ;ws_copy
  44.         dc.w    _info-_base        ;ws_info
  45.  
  46. _name        dc.b    "Quality Assurance Slave",0
  47. _copy        dc.b    "Wepl",0
  48. _info        dc.b    "done by Wepl "
  49.     DOSCMD    "WDate  >T:date"
  50.     INCBIN    "T:date"
  51.         dc.b    -1
  52.         dc.b    "$Id: qa.asm 1.10 2003/12/04 08:12:03 wepl Exp wepl $"
  53.         dc.b    0
  54. _badcustom1    dc.b    "value of Custom1/N is invalid",0
  55.     EVEN
  56.  
  57. _tags        dc.l    WHDLTAG_CUSTOM1_GET
  58. _custom1    dc.l    0
  59.     IFD HRTMON
  60.         dc.l    WHDLTAG_Private4
  61.         dc.l    -1
  62.     ENDC
  63.         dc.l    0
  64.  
  65. ;======================================================================
  66. _start    ;    A0 = resident loader
  67. ;======================================================================
  68.  
  69.         move.l    a0,a4            ;A4 = resload
  70.         lea    (_ciaa),a5        ;A5 = ciaa
  71.         lea    (_custom),a6        ;A6 = custom
  72.     ;ssp in fast but not on first or last page because
  73.     ;resload_Protect
  74.         move.l    (_expmem),a7
  75.         add.l    #EXPMEM-$2000,a7
  76.  
  77.     ;init memory at upper chipmem bound because written by WHDLoad
  78.     ;during calling the slave
  79.         lea    BASEMEMREAL-128,a0
  80.         moveq    #128/4-2,d0
  81.         move.l    (a0)+,d1
  82. .clr        move.l    d1,(a0)+
  83.         dbf    d0,.clr
  84.         sub.l    a0,a0
  85.         move.l    d1,(a0)+
  86.         move.l    d1,(a0)+
  87.  
  88.         lea    _tags,a0
  89.         jsr    (resload_Control,a4)
  90.  
  91.         move.l    _custom1,d0
  92.         beq    .bad
  93.         lea    _table,a0
  94. .loop        move.l    (a0)+,d1
  95.         move.w    (a0)+,d2
  96.         cmp.l    d0,d1
  97.         beq    .found
  98.         tst.w    d2
  99.         bne    .loop
  100.  
  101. .bad        pea    _badcustom1
  102.         pea    TDREASON_FAILMSG
  103.         jmp    (resload_Abort,a4)
  104.  
  105. .found        jsr    (_table,pc,d2.w)
  106.  
  107.         pea    TDREASON_OK
  108.         jmp    (resload_Abort,a4)
  109.         
  110. ;======================================================================
  111.  
  112. TAB    MACRO
  113.     dc.l    \1
  114.     dc.w    \2-_table
  115.     ENDM
  116.  
  117. _table        ; first line without TAB becuse perl parsing!
  118.  
  119.             ;TDREASON_#?    ;options for WHDLoad
  120.  
  121.  TAB 1000,_bltsiz_0    ;OK        ;SnoopOCS ChkBltSize
  122.  TAB 1001,_bltsiz_1a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  123.  TAB 1002,_bltsiz_2a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  124.  TAB 1003,_bltsiz_3a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  125.  TAB 1004,_bltsiz_4a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  126.  TAB 1005,_bltsiz_5a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  127.  TAB 1006,_bltsiz_6a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  128.  TAB 1007,_bltsiz_7a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  129.  TAB 1008,_bltsiz_8a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  130.  TAB 1009,_bltsiz_9a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  131.  TAB 1010,_bltsiz_10a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  132.  TAB 1011,_bltsiz_11a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  133.  TAB 1012,_bltsiz_12a    ;BLITSIZE,DMA-A    ;SnoopOCS ChkBltSize
  134.  TAB 1021,_bltsiz_1b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  135.  TAB 1022,_bltsiz_2b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  136.  TAB 1023,_bltsiz_3b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  137.  TAB 1024,_bltsiz_4b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  138.  TAB 1025,_bltsiz_5b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  139.  TAB 1026,_bltsiz_6b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  140.  TAB 1027,_bltsiz_7b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  141.  TAB 1028,_bltsiz_8b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  142.  TAB 1029,_bltsiz_9b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  143.  TAB 1030,_bltsiz_10b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  144.  TAB 1031,_bltsiz_11b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  145.  TAB 1032,_bltsiz_12b    ;BLITSIZE,DMA-B    ;SnoopOCS ChkBltSize
  146.  TAB 1041,_bltsiz_1c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  147.  TAB 1042,_bltsiz_2c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  148.  TAB 1043,_bltsiz_3c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  149.  TAB 1044,_bltsiz_4c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  150.  TAB 1045,_bltsiz_5c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  151.  TAB 1046,_bltsiz_6c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  152.  TAB 1047,_bltsiz_7c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  153.  TAB 1048,_bltsiz_8c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  154.  TAB 1049,_bltsiz_9c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  155.  TAB 1050,_bltsiz_10c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  156.  TAB 1051,_bltsiz_11c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  157.  TAB 1052,_bltsiz_12c    ;BLITSIZE,DMA-C    ;SnoopOCS ChkBltSize
  158.  TAB 1061,_bltsiz_1d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  159.  TAB 1062,_bltsiz_2d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  160.  TAB 1063,_bltsiz_3d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  161.  TAB 1064,_bltsiz_4d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  162.  TAB 1065,_bltsiz_5d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  163.  TAB 1066,_bltsiz_6d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  164.  TAB 1067,_bltsiz_7d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  165.  TAB 1068,_bltsiz_8d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  166.  TAB 1069,_bltsiz_9d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  167.  TAB 1070,_bltsiz_10d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  168.  TAB 1071,_bltsiz_11d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  169.  TAB 1072,_bltsiz_12d    ;BLITSIZE,DMA-D    ;SnoopOCS ChkBltSize
  170.  TAB 1100,_bltsiz_0    ;OK        ;SnoopOCS ChkBltSize ChkBltWait
  171.  TAB 1200,_bltsizprot_0    ;OK        ;SnoopOCS ChkBltSize
  172.  TAB 1201,_bltsizprot_1    ;OK        ;SnoopOCS ChkBltSize
  173.  TAB 1202,_bltsizprot_2    ;OK        ;SnoopOCS ChkBltSize
  174.  TAB 1203,_bltsizprot_3    ;OK        ;SnoopECS ChkBltSize
  175.  TAB 1204,_bltsizprot_4    ;OK        ;SnoopECS ChkBltSize
  176.  TAB 1205,_bltsizprot_5    ;OK        ;SnoopECS ChkBltSize
  177.  TAB 1206,_bltsizprot_0    ;OK        ;SnoopOCS ChkBltSize ChkBltWait
  178.  TAB 1207,_bltsizprot_1    ;OK        ;SnoopOCS ChkBltSize ChkBltWait
  179.  TAB 1208,_bltsizprot_2    ;OK        ;SnoopOCS ChkBltSize ChkBltWait
  180.  TAB 1209,_bltsizprot_3    ;OK        ;SnoopECS ChkBltSize ChkBltWait
  181.  TAB 1210,_bltsizprot_4    ;OK        ;SnoopECS ChkBltSize ChkBltWait
  182.  TAB 1211,_bltsizprot_5    ;OK        ;SnoopECS ChkBltSize ChkBltWait
  183.  TAB 1220,_bltsizprot_20;BLITSIZE,Word Write,custom.bltsize    ;SnoopOCS ChkBltSize
  184.  TAB 1221,_bltsizprot_21;BLITSIZE,Long Write,custom.bltdptl    ;SnoopOCS ChkBltSize
  185.  TAB 31222,_bltsizprot_22;BLITSIZE,Word Write,custom.bltsize    ;SnoopOCS ChkBltSize
  186.  TAB 61222,_bltsizprot_22;BLITSIZE,Word Write,custom.bltdptl    ;SnoopOCS ChkBltSize
  187.  TAB 1223,_bltsizprot_23;BLITSIZE,Word Write,custom.bltsizh    ;SnoopECS ChkBltSize
  188.  TAB 1224,_bltsizprot_24;BLITSIZE,Long Write,custom.bltsizv    ;SnoopECS ChkBltSize
  189.  TAB 31225,_bltsizprot_25;BLITSIZE,Word Write,custom.bltsizh    ;SnoopECS ChkBltSize
  190.  TAB 61225,_bltsizprot_25;BLITSIZE,Word Write,custom.bltsizv    ;SnoopECS ChkBltSize
  191.  TAB 1226,_bltsizprot_20;BLITSIZE,Word Write,custom.bltsize    ;SnoopOCS ChkBltSize ChkBltWait
  192.  TAB 1227,_bltsizprot_21;BLITSIZE,Long Write,custom.bltdptl    ;SnoopOCS ChkBltSize ChkBltWait
  193.  TAB 31228,_bltsizprot_22;BLITSIZE,Word Write,custom.bltsize    ;SnoopOCS ChkBltSize ChkBltWait
  194.  TAB 61228,_bltsizprot_22;BLITSIZE,Word Write,custom.bltdptl    ;SnoopOCS ChkBltSize ChkBltWait
  195.  TAB 1229,_bltsizprot_23;BLITSIZE,Word Write,custom.bltsizh    ;SnoopECS ChkBltSize ChkBltWait
  196.  TAB 1230,_bltsizprot_24;BLITSIZE,Long Write,custom.bltsizv    ;SnoopECS ChkBltSize ChkBltWait
  197.  TAB 31231,_bltsizprot_25;BLITSIZE,Word Write,custom.bltsizh    ;SnoopECS ChkBltSize ChkBltWait
  198.  TAB 61231,_bltsizprot_25;BLITSIZE,Word Write,custom.bltsizv    ;SnoopECS ChkBltSize ChkBltWait
  199.  TAB 1240,_bltsizprot_40;BLITSIZE,Word Write,custom.bltsize    ;SnoopOCS ChkBltSize
  200.  TAB 1241,_bltsizprot_41;BLITSIZE,Long Write,custom.bltdptl    ;SnoopOCS ChkBltSize
  201.  TAB 31242,_bltsizprot_42;BLITSIZE,Word Write,custom.bltsize    ;SnoopOCS ChkBltSize
  202.  TAB 61242,_bltsizprot_42;BLITSIZE,Word Write,custom.bltdptl    ;SnoopOCS ChkBltSize
  203.  TAB 1243,_bltsizprot_43;BLITSIZE,Word Write,custom.bltsizh    ;SnoopECS ChkBltSize
  204.  TAB 1244,_bltsizprot_44;BLITSIZE,Long Write,custom.bltsizv    ;SnoopECS ChkBltSize
  205.  TAB 31245,_bltsizprot_45;BLITSIZE,Word Write,custom.bltsizh    ;SnoopECS ChkBltSize
  206.  TAB 61245,_bltsizprot_45;BLITSIZE,Word Write,custom.bltsizv    ;SnoopECS ChkBltSize
  207.  TAB 1246,_bltsizprot_40;BLITSIZE,Word Write,custom.bltsize    ;SnoopOCS ChkBltSize ChkBltWait
  208.  TAB 1247,_bltsizprot_41;BLITSIZE,Long Write,custom.bltdptl    ;SnoopOCS ChkBltSize ChkBltWait
  209.  TAB 31248,_bltsizprot_42;BLITSIZE,Word Write,custom.bltsize    ;SnoopOCS ChkBltSize ChkBltWait
  210.  TAB 61248,_bltsizprot_42;BLITSIZE,Word Write,custom.bltdptl    ;SnoopOCS ChkBltSize ChkBltWait
  211.  TAB 1249,_bltsizprot_43;BLITSIZE,Word Write,custom.bltsizh    ;SnoopECS ChkBltSize ChkBltWait
  212.  TAB 1250,_bltsizprot_44;BLITSIZE,Long Write,custom.bltsizv    ;SnoopECS ChkBltSize ChkBltWait
  213.  TAB 31251,_bltsizprot_45;BLITSIZE,Word Write,custom.bltsizh    ;SnoopECS ChkBltSize ChkBltWait
  214.  TAB 61251,_bltsizprot_45;BLITSIZE,Word Write,custom.bltsizv    ;SnoopECS ChkBltSize ChkBltWait
  215.  TAB 1260,_bltsizprot_d0;OK                    ;SnoopECS ChkBltSize
  216.  TAB 1261,_bltsizprot_d1;BLITSIZE,Word Write,custom.bltsize    ;SnoopECS ChkBltSize
  217.  TAB 1262,_bltsizprot_d2;BLITSIZE,Word Write,custom.bltsize    ;SnoopECS ChkBltSize
  218.  TAB 1900,_bltwait_0    ;OK        ;SnoopECS ChkBltWait
  219.  TAB 1901,_bltwait_1    ;BLITWAIT,custom.bltcon0l    ;SnoopECS ChkBltWait
  220.  TAB 1902,_bltwait_1    ;BLITWAIT,custom.bltcon0l    ;SnoopECS ChkBltSize ChkBltWait
  221.  TAB 1903,_bltwait_3    ;BLITWAIT,custom.bltafwm    ;SnoopOCS ChkBltWait
  222.  TAB 1904,_bltwait_4    ;BLITWAIT,custom.bltafwm    ;SnoopOCS ChkBltWait
  223.  TAB 1905,_bltwait_5    ;BLITWAIT,custom.bltafwm    ;SnoopOCS ChkBltWait
  224.  TAB 1906,_bltwait_6    ;BLITWAIT,custom.bltafwm    ;SnoopOCS ChkBltWait
  225.  TAB 31907,_bltwait_7    ;ACCESSFAULT,custom.bltcon0l    ;SnoopOCS ChkBltWait
  226.  TAB 61907,_bltwait_7    ;ACCESSFAULT,custom.bltdpt    ;SnoopOCS ChkBltWait
  227.  TAB 31908,_bltwait_8    ;ACCESSFAULT,custom.bltsize    ;SnoopOCS ChkBltWait
  228.  TAB 61908,_bltwait_8    ;ACCESSFAULT,custom.bltdpt    ;SnoopOCS ChkBltWait
  229.  TAB 1909,_bltwait_9    ;ACCESSFAULT,custom.bltsizv    ;SnoopOCS ChkBltWait
  230.  TAB 1910,_bltwait_10    ;ACCESSFAULT,custom.bltsizv    ;SnoopOCS ChkBltWait
  231.  TAB 1911,_bltwait_11    ;ACCESSFAULT,custom.bltsizv    ;SnoopOCS ChkBltWait
  232.  TAB 1912,_bltwait_9    ;BLITWAIT,custom.bltafwm    ;SnoopECS ChkBltWait
  233.  TAB 1913,_bltwait_10    ;BLITWAIT,custom.bltafwm    ;SnoopECS ChkBltWait
  234.  TAB 1914,_bltwait_11    ;BLITWAIT,custom.bltafwm    ;SnoopECS ChkBltWait
  235.  TAB 1915,_bltwait_15    ;ACCESSFAULT,custom.bltcon0l    ;SnoopECS ChkBltWait
  236.  TAB 1916,_bltwait_16    ;ACCESSFAULT,custom.bltsize    ;SnoopECS ChkBltWait
  237.  TAB 1917,_bltwait_3    ;BLITWAIT,custom.bltafwm    ;SnoopOCS ChkBltSize ChkBltWait
  238.  TAB 1918,_bltwait_4    ;BLITWAIT,custom.bltafwm    ;SnoopOCS ChkBltSize ChkBltWait
  239.  TAB 1919,_bltwait_5    ;BLITWAIT,custom.bltafwm    ;SnoopOCS ChkBltSize ChkBltWait
  240.  TAB 1920,_bltwait_6    ;BLITWAIT,custom.bltafwm    ;SnoopOCS ChkBltSize ChkBltWait
  241.  TAB 31921,_bltwait_7    ;ACCESSFAULT,custom.bltcon0l    ;SnoopOCS ChkBltSize ChkBltWait
  242.  TAB 61921,_bltwait_7    ;ACCESSFAULT,custom.bltdpt    ;SnoopOCS ChkBltSize ChkBltWait
  243.  TAB 31922,_bltwait_8    ;ACCESSFAULT,custom.bltsize    ;SnoopOCS ChkBltSize ChkBltWait
  244.  TAB 61922,_bltwait_8    ;ACCESSFAULT,custom.bltdpt    ;SnoopOCS ChkBltSize ChkBltWait
  245.  TAB 1923,_bltwait_9    ;ACCESSFAULT,custom.bltsizv    ;SnoopOCS ChkBltSize ChkBltWait
  246.  TAB 1924,_bltwait_10    ;ACCESSFAULT,custom.bltsizv    ;SnoopOCS ChkBltSize ChkBltWait
  247.  TAB 1925,_bltwait_11    ;ACCESSFAULT,custom.bltsizv    ;SnoopOCS ChkBltSize ChkBltWait
  248.  TAB 1926,_bltwait_9    ;BLITWAIT,custom.bltafwm    ;SnoopECS ChkBltSize ChkBltWait
  249.  TAB 1927,_bltwait_10    ;BLITWAIT,custom.bltafwm    ;SnoopECS ChkBltSize ChkBltWait
  250.  TAB 1928,_bltwait_11    ;BLITWAIT,custom.bltafwm    ;SnoopECS ChkBltSize ChkBltWait
  251.  TAB 1929,_bltwait_15    ;ACCESSFAULT,custom.bltcon0l    ;SnoopECS ChkBltSize ChkBltWait
  252.  TAB 1930,_bltwait_16    ;ACCESSFAULT,custom.bltsize    ;SnoopECS ChkBltSize ChkBltWait
  253.  TAB 2000,_copcon_0    ;ACCESSFAULT            ;SnoopOCS ChkCopCon
  254.  TAB 2001,_copcon_1    ;ACCESSFAULT            ;SnoopOCS ChkCopCon
  255.  TAB 2002,_copcon_2    ;ACCESSFAULT            ;SnoopOCS ChkCopCon
  256.  TAB 2003,_copcon_3    ;ACCESSFAULT            ;SnoopOCS ChkCopCon
  257.  TAB 2004,_copcon_4    ;OK                ;SnoopOCS
  258.  TAB 2101,_cia_1    ;OK                ;SnoopOCS
  259.  TAB 2102,_cia_2    ;OK                ;SnoopOCS
  260.  TAB 2103,_cia_3    ;ACCESSFAULT,ciaa.pra        ;Snoop
  261.  TAB 2104,_cia_4    ;OK                ;SnoopOCS
  262.  TAB 2105,_cia_5    ;ACCESSFAULT,ciaa.ddra        ;SnoopOCS
  263.  TAB 2106,_cia_6    ;OK                ;SnoopOCS
  264.  TAB 2107,_cia_7    ;OK                ;SnoopOCS
  265.  TAB 62108,_cia_8    ;ACCESSFAULT,ciaa.todlow    ;SnoopECS
  266.  TAB 2109,_cia_9    ;OK                ;SnoopOCS
  267.  TAB 2110,_cia_10    ;OK                ;SnoopOCS
  268.  TAB 2111,_cia_11    ;OK                ;SnoopOCS
  269.  TAB 2112,_cia_12    ;ACCESSFAULT,ciab.prb        ;SnoopAGA
  270.  TAB 2113,_cia_13    ;OK                ;SnoopOCS
  271.  TAB 2114,_cia_14    ;ACCESSFAULT,ciab.ddra        ;SnoopOCS
  272.  TAB 2115,_cia_15    ;OK                ;SnoopOCS
  273.  TAB 2116,_cia_16    ;ACCESSFAULT,ciab.ddrb        ;SnoopOCS
  274.  TAB 2117,_cia_17    ;OK                ;SnoopOCS
  275.  TAB 2118,_cia_18    ;OK                ;SnoopOCS
  276.  TAB 2201,_cust_1    ;OK                ;SnoopOCS
  277.  TAB 2202,_cust_2    ;OK                ;SnoopOCS
  278.  TAB 2203,_cust_3    ;OK                ;SnoopOCS
  279.  TAB 2204,_cust_4    ;OK                ;Snoop
  280.  TAB 2205,_cust_5    ;OK                ;Snoop
  281.  TAB 2206,_cust_4    ;ACCESSFAULT,custom.intreqr    ;SnoopOCS
  282.  TAB 2207,_cust_5    ;ACCESSFAULT,custom.bltcon0    ;SnoopOCS
  283.  TAB 2208,_cust_8    ;OK                ;Snoop
  284.  TAB 2209,_cust_9    ;OK                ;Snoop
  285.  TAB 2210,_cust_10    ;OK                ;Snoop
  286.  TAB 2211,_cust_8    ;ACCESSFAULT,Byte Write,custom.dmaconr    ;SnoopOCS
  287.  TAB 2212,_cust_9    ;ACCESSFAULT,Word Write,custom.dmaconr    ;SnoopOCS
  288.  TAB 2213,_cust_10    ;ACCESSFAULT,Long Write,custom.dmaconr    ;SnoopOCS
  289.  TAB 2214,_cust_14    ;OK                ;SnoopAGA
  290.  TAB 2215,_cust_14    ;ACCESSFAULT            ;SnoopECS
  291.  TAB 2216,_cust_16    ;OK                ;SnoopECS
  292.  TAB 2217,_cust_16    ;ACCESSFAULT            ;SnoopOCS
  293.  TAB 2218,_cust_18    ;ACCESSFAULT            ;SnoopOCS
  294.  TAB 2219,_cust_19    ;OK                ;SnoopOCS
  295.  TAB 2220,_cust_20    ;OK                ;Snoop
  296.  TAB 32221,_cust_21    ;OK                ;Snoop
  297.  TAB 62221,_cust_21    ;SNOOPSSPMODI            ;Snoop
  298.  TAB 2222,_cust_22    ;OK                ;Snoop
  299.  TAB 2223,_cust_22    ;ACCESSFAULT            ;SnoopOCS
  300.  TAB 2224,_cust_24    ;ACCESSFAULT            ;SnoopAGA
  301.  TAB 2225,_cust_25    ;ACCESSFAULT            ;SnoopOCS ChkColBst
  302.  TAB 2226,_cust_26    ;ACCESSFAULT            ;SnoopOCS
  303.  TAB 2227,_cust_27    ;ACCESSFAULT            ;SnoopOCS
  304.  TAB 2228,_cust_28    ;ACCESSFAULT            ;SnoopOCS
  305.  TAB 2229,_cust_29    ;ACCESSFAULT            ;SnoopOCS
  306.  TAB 2230,_cust_30    ;ACCESSFAULT            ;SnoopOCS
  307.  TAB 2231,_cust_30    ;ACCESSFAULT            ;SnoopECS
  308.  TAB 2232,_cust_30    ;OK                ;SnoopAGA
  309.  TAB 2233,_cust_30    ;ACCESSFAULT            ;SnoopAGA ChkColBst
  310.  TAB 2234,_cust_34    ;OK                ;SnoopOCS
  311.  TAB 2235,_cust_34    ;ACCESSFAULT            ;SnoopOCS ChkBltHog
  312.  TAB 2236,_cust_36    ;ACCESSFAULT            ;SnoopOCS ChkCopCon
  313.  TAB 2237,_cust_37    ;ACCESSFAULT            ;SnoopOCS ChkCopCon
  314.  TAB 2238,_cust_38    ;ACCESSFAULT            ;SnoopOCS ChkCopCon
  315.  TAB 2239,_cust_36    ;OK                ;SnoopOCS
  316.  TAB 2240,_cust_37    ;OK                ;SnoopOCS
  317.  TAB 2241,_cust_38    ;OK                ;SnoopOCS
  318.  TAB 2242,_cust_42    ;ACCESSFAULT            ;SnoopOCS
  319.  TAB 2243,_cust_42    ;ACCESSFAULT            ;SnoopOCS ChkBltWait
  320.  TAB 2244,_cust_42    ;ACCESSFAULT            ;SnoopOCS ChkBltWait ChkBltSize
  321.  TAB 2245,_cust_42    ;ACCESSFAULT            ;SnoopOCS ChkBltSize
  322.  TAB 2246,_cust_46    ;ACCESSFAULT            ;SnoopOCS Chk
  323.  TAB 2247,_cust_47    ;ACCESSFAULT,custom.bltsize    ;SnoopECS
  324.  TAB 2248,_cust_48    ;ACCESSFAULT,custom.bltsizh    ;SnoopECS
  325.  TAB 2300,_cop_0    ;OK                ;SnoopECS
  326.  TAB 2301,_cop_1    ;BADCOP                ;SnoopOCS
  327.  TAB 2302,_cop_2    ;BADCOP                ;SnoopOCS
  328.  TAB 2303,_cop_3    ;OK                ;SnoopOCS
  329.  TAB 2304,_cop_3    ;BADCOP                ;SnoopOCS ChkColBst
  330.  TAB 2305,_cop_3    ;BADCOP                ;SnoopOCS Chk
  331.  TAB 2306,_cop_6    ;BADCOP                ;SnoopOCS
  332.  TAB 2307,_cop_6    ;OK                ;SnoopECS
  333.  TAB 2308,_cop_8    ;BADCOP                ;SnoopOCS
  334.  TAB 2309,_cop_8    ;OK                ;SnoopECS
  335.  TAB 2310,_cop_10    ;OK                ;Snoop
  336.  TAB 2311,_cop_10    ;BADCOP                ;SnoopOCS
  337.  TAB 2312,_cop_12    ;BADCOP                ;SnoopOCS
  338.  TAB 2313,_cop_13    ;BADCOP                ;SnoopOCS
  339.  TAB 3000,_af_inst_0    ;ACCESSFAULT,Instruction stream,$A0000000    ;
  340.  TAB 3001,_af_inst_1    ;ACCESSFAULT,Word Read,$0            ;
  341.  TAB 3002,_af_inst_2    ;ACCESSFAULT,Word Read,$1000            ;
  342.  TAB 33003,_af_inst_330    ;ACCESSFAULT,Word Read,$3FFFC            ;
  343.  TAB 63003,_af_inst_360    ;ACCESSFAULT,Word Read,$3FFFE            ;
  344.  TAB 3004,_af_inst_4    ;ACCESSFAULT,Word Read,(ExpMem $0)        ;
  345.  TAB 3005,_af_inst_5    ;ACCESSFAULT,Word Read,(ExpMem $100)        ;
  346.  TAB 33006,_af_inst_630    ;ACCESSFAULT,Word Read,(ExpMem $FFFC)        ;
  347.  TAB 63006,_af_inst_660    ;ACCESSFAULT,Word Read,(ExpMem $FFFE)        ;
  348.  TAB 3009,_af_inst_9    ;EXCEPTION,Address Error            ;
  349.  TAB 3100,_af_smc_ok    ;OK,                        ;
  350.  TAB 3101,_af_smc_1    ;SMC,address $1002 has                ;
  351.  TAB 3110,_af_smc_ba1    ;PROTECTSMC,already                ;
  352.  TAB 3111,_af_smc_ba2    ;ILLEGALARGS,TC =                ;
  353.  TAB 63200,_af_cbaf_0    ;ACCESSFAULT,$1000                ;
  354.  TAB 63201,_af_cbaf_1    ;OK        ;
  355.  TAB 63202,_af_cbaf_2    ;OK        ;
  356.  TAB 63203,_af_cbaf_3    ;OK        ;
  357.  TAB 33204,_af_cbaf_4    ;OK        ;
  358.  TAB 33205,_af_cbaf_5    ;OK        ;
  359.  TAB 33206,_af_cbaf_6    ;OK        ;
  360.  TAB 4000,_af_prot_rlok    ;OK        ;
  361.  TAB 4001,_af_prot_wlok    ;OK        ;
  362.  TAB 4002,_af_prot_rwok    ;OK        ;
  363.  TAB 4003,_af_prot_wwok    ;OK        ;
  364.  TAB 4004,_af_prot_rbok    ;OK        ;
  365.  TAB 4005,_af_prot_wbok    ;OK        ;
  366.  TAB 4010,_af_prot_rll    ;ACCESSFAULT,Long Read from $10FD        ;
  367.  TAB 4011,_af_prot_rlu    ;ACCESSFAULT,Long Read from $1103        ;
  368.  TAB 4012,_af_prot_wll    ;ACCESSFAULT,Long Write to $10FD        ;
  369.  TAB 4013,_af_prot_wlu    ;ACCESSFAULT,Long Write to $1103        ;
  370.  TAB 34014,_af_prot_mll    ;ACCESSFAULT,Long Read from $10FD        ;
  371.  TAB 34015,_af_prot_mlu    ;ACCESSFAULT,Long Read from $1103        ;
  372.  TAB 64014,_af_prot_mll    ;ACCESSFAULT,Long Read-Modify-Write on $10FD    ;
  373.  TAB 64015,_af_prot_mlu    ;ACCESSFAULT,Long Read-Modify-Write on $1103    ;
  374.  TAB 4020,_af_prot_rwl    ;ACCESSFAULT,Word Read from $10FF        ;
  375.  TAB 4021,_af_prot_rwu    ;ACCESSFAULT,Word Read from $1103        ;
  376.  TAB 4022,_af_prot_wwl    ;ACCESSFAULT,Word Write to $10FF        ;
  377.  TAB 4023,_af_prot_wwu    ;ACCESSFAULT,Word Write to $1103        ;
  378.  TAB 34024,_af_prot_mwl    ;ACCESSFAULT,Word Read from $10FF        ;
  379.  TAB 34025,_af_prot_mwu    ;ACCESSFAULT,Word Read from $1103        ;
  380.  TAB 64024,_af_prot_mwl    ;ACCESSFAULT,Word Read-Modify-Write on $10FF    ;
  381.  TAB 64025,_af_prot_mwu    ;ACCESSFAULT,Word Read-Modify-Write on $1103    ;
  382.  TAB 4030,_af_prot_rbl    ;ACCESSFAULT,Byte Read from $1100        ;
  383.  TAB 4031,_af_prot_rbu    ;ACCESSFAULT,Byte Read from $1103        ;
  384.  TAB 4032,_af_prot_wbl    ;ACCESSFAULT,Byte Write to $1100        ;
  385.  TAB 4033,_af_prot_wbu    ;ACCESSFAULT,Byte Write to $1103        ;
  386.  TAB 34034,_af_prot_mbl    ;ACCESSFAULT,Byte Read from $1100        ;
  387.  TAB 34035,_af_prot_mbu    ;ACCESSFAULT,Byte Read from $1103        ;
  388.  TAB 64034,_af_prot_mbl    ;ACCESSFAULT,Byte Read-Modify-Write on $1100    ;
  389.  TAB 64035,_af_prot_mbu    ;ACCESSFAULT,Byte Read-Modify-Write on $1103    ;
  390.  TAB 4040,_af_prot_tas    ;ACCESSFAULT,locked Byte Read-Modify-Write on $1100    ;
  391.  TAB 4041,_af_prot_cas    ;ACCESSFAULT,locked Long Read-Modify-Write on $1100    ;
  392.  
  393.         dc.l    0    ;end
  394.  
  395. ;======================================================================
  396. ;        111111
  397. ;        5432109876543210
  398. ; bltcon0    SSSSABCDMMMMMMMM S = shift for channel A
  399. ;                 ABCD = enable for dma channel ABCD
  400. ;                 M = miniterm
  401. ; bltcon1    SSSS       EICDL E = exclusive fill enable
  402. ;                 I = inclusive fill enable
  403. ;                 C = fill carry in
  404. ;                 D = descending mode
  405. ;                 L = line mode
  406. ; bltsize    HHHHHHHHHHWWWWWW height = 1..1024 lines
  407. ;                 width = 1..64 words
  408.  
  409. _bltsiz_0    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  410.     IFEQ 1
  411.     ;testing to see how blitter works
  412.         move.w    #%0000000100000000,(bltcon0,a6)    ;only DMA-D
  413.         move.w    #%0000000000000000,(bltcon1,a6)    ;ascending
  414.         move.w    #10,(bltdmod,a6)        ;mod > -wid
  415.         move.l    #$1000,(bltdpt,a6)
  416.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  417.         bsr    _bw
  418.         move.w    #-6,(bltdmod,a6)        ;mod = -wid
  419.         move.l    #$2000,(bltdpt,a6)
  420.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  421.         bsr    _bw
  422.         move.w    #-22,(bltdmod,a6)        ;mod < -wid
  423.         move.l    #$3000,(bltdpt,a6)
  424.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  425.         bsr    _bw
  426.         move.w    #%0000000000000010,(bltcon1,a6)    ;descending
  427.         move.w    #10,(bltdmod,a6)        ;mod > -wid
  428.         move.l    #$4000,(bltdpt,a6)
  429.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  430.         bsr    _bw
  431.         move.w    #-6,(bltdmod,a6)        ;mod = -wid
  432.         move.l    #$5000,(bltdpt,a6)
  433.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  434.         bsr    _bw
  435.         move.w    #-22,(bltdmod,a6)        ;mod < -wid
  436.         move.l    #$6000,(bltdpt,a6)
  437.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  438.         bsr    _bw
  439.         bra    _debug
  440.     ENDC
  441.         move.w    #%0000111100000000,(bltcon0,a6)    ;all channels
  442.     ;ascending
  443.         move.w    #%0000000000000000,(bltcon1,a6)
  444.     ;ascending, modulo > -width, lower bound
  445.         move.w    #10,(bltcmod,a6)
  446.         move.w    #10,(bltbmod,a6)
  447.         move.w    #10,(bltamod,a6)
  448.         move.w    #10,(bltdmod,a6)
  449.         move.l    #0,(bltcpt,a6)
  450.         move.l    #0,(bltbpt,a6)
  451.         move.l    #0,(bltapt,a6)
  452.         move.l    #0,(bltdpt,a6)
  453.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  454.         bsr    _bw
  455.         move.w    #11,(bltcmod,a6)
  456.         move.w    #11,(bltbmod,a6)
  457.         move.w    #11,(bltamod,a6)
  458.         move.w    #11,(bltdmod,a6)
  459.         move.l    #1,(bltcpt,a6)
  460.         move.l    #1,(bltbpt,a6)
  461.         move.l    #1,(bltapt,a6)
  462.         move.l    #1,(bltdpt,a6)
  463.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  464.         bsr    _bw
  465.     ;ascending, modulo > -width, upper bound
  466.         move.w    #10,(bltcmod,a6)
  467.         move.w    #10,(bltbmod,a6)
  468.         move.w    #10,(bltamod,a6)
  469.         move.w    #10,(bltdmod,a6)
  470.         move.l    #BASEMEM-$30+10,(bltcpt,a6)
  471.         move.l    #BASEMEM-$30+10,(bltbpt,a6)
  472.         move.l    #BASEMEM-$30+10,(bltapt,a6)
  473.         move.l    #BASEMEM-$30+10,(bltdpt,a6)
  474.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  475.         bsr    _bw
  476.         move.w    #11,(bltcmod,a6)
  477.         move.w    #11,(bltbmod,a6)
  478.         move.w    #11,(bltamod,a6)
  479.         move.w    #11,(bltdmod,a6)
  480.         move.l    #BASEMEM-$30+11,(bltcpt,a6)
  481.         move.l    #BASEMEM-$30+11,(bltbpt,a6)
  482.         move.l    #BASEMEM-$30+11,(bltapt,a6)
  483.         move.l    #BASEMEM-$30+11,(bltdpt,a6)
  484.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  485.         bsr    _bw
  486.     ;ascending, modulo == -width, lower bound
  487.         move.w    #-6,(bltcmod,a6)
  488.         move.w    #-6,(bltbmod,a6)
  489.         move.w    #-6,(bltamod,a6)
  490.         move.w    #-6,(bltdmod,a6)
  491.         move.l    #0,(bltcpt,a6)
  492.         move.l    #0,(bltbpt,a6)
  493.         move.l    #0,(bltapt,a6)
  494.         move.l    #0,(bltdpt,a6)
  495.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  496.         bsr    _bw
  497.         move.w    #-6!1,(bltcmod,a6)
  498.         move.w    #-6!1,(bltbmod,a6)
  499.         move.w    #-6!1,(bltamod,a6)
  500.         move.w    #-6!1,(bltdmod,a6)
  501.         move.l    #1,(bltcpt,a6)
  502.         move.l    #1,(bltbpt,a6)
  503.         move.l    #1,(bltapt,a6)
  504.         move.l    #1,(bltdpt,a6)
  505.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  506.         bsr    _bw
  507.     ;ascending, modulo == -width, upper bound
  508.         move.w    #-6,(bltcmod,a6)
  509.         move.w    #-6,(bltbmod,a6)
  510.         move.w    #-6,(bltamod,a6)
  511.         move.w    #-6,(bltdmod,a6)
  512.         move.l    #BASEMEM-6,(bltcpt,a6)
  513.         move.l    #BASEMEM-6,(bltbpt,a6)
  514.         move.l    #BASEMEM-6,(bltapt,a6)
  515.         move.l    #BASEMEM-6,(bltdpt,a6)
  516.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  517.         bsr    _bw
  518.         move.w    #-6!1,(bltcmod,a6)
  519.         move.w    #-6!1,(bltbmod,a6)
  520.         move.w    #-6!1,(bltamod,a6)
  521.         move.w    #-6!1,(bltdmod,a6)
  522.         move.l    #BASEMEM-6!1,(bltcpt,a6)
  523.         move.l    #BASEMEM-6!1,(bltbpt,a6)
  524.         move.l    #BASEMEM-6!1,(bltapt,a6)
  525.         move.l    #BASEMEM-6!1,(bltdpt,a6)
  526.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  527.         bsr    _bw
  528.     ;ascending, modulo < -width, lower bound
  529.         move.w    #-16-6,(bltcmod,a6)
  530.         move.w    #-16-6,(bltbmod,a6)
  531.         move.w    #-16-6,(bltamod,a6)
  532.         move.w    #-16-6,(bltdmod,a6)
  533.         move.l    #$20,(bltcpt,a6)
  534.         move.l    #$20,(bltbpt,a6)
  535.         move.l    #$20,(bltapt,a6)
  536.         move.l    #$20,(bltdpt,a6)
  537.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  538.         bsr    _bw
  539.         move.w    #-16-6!1,(bltcmod,a6)
  540.         move.w    #-16-6!1,(bltbmod,a6)
  541.         move.w    #-16-6!1,(bltamod,a6)
  542.         move.w    #-16-6!1,(bltdmod,a6)
  543.         move.l    #$21,(bltcpt,a6)
  544.         move.l    #$21,(bltbpt,a6)
  545.         move.l    #$21,(bltapt,a6)
  546.         move.l    #$21,(bltdpt,a6)
  547.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  548.         bsr    _bw
  549.     ;ascending, modulo < -width, upper bound
  550.         move.w    #-16-6,(bltcmod,a6)
  551.         move.w    #-16-6,(bltbmod,a6)
  552.         move.w    #-16-6,(bltamod,a6)
  553.         move.w    #-16-6,(bltdmod,a6)
  554.         move.l    #BASEMEM-6,(bltcpt,a6)
  555.         move.l    #BASEMEM-6,(bltbpt,a6)
  556.         move.l    #BASEMEM-6,(bltapt,a6)
  557.         move.l    #BASEMEM-6,(bltdpt,a6)
  558.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  559.         bsr    _bw
  560.         move.w    #-16-6!1,(bltcmod,a6)
  561.         move.w    #-16-6!1,(bltbmod,a6)
  562.         move.w    #-16-6!1,(bltamod,a6)
  563.         move.w    #-16-6!1,(bltdmod,a6)
  564.         move.l    #BASEMEM-6!1,(bltcpt,a6)
  565.         move.l    #BASEMEM-6!1,(bltbpt,a6)
  566.         move.l    #BASEMEM-6!1,(bltapt,a6)
  567.         move.l    #BASEMEM-6!1,(bltdpt,a6)
  568.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  569.         bsr    _bw
  570.     ;descending
  571.         move.w    #%0000000000000010,(bltcon1,a6)
  572.     ;descending, modulo > -width, lower bound
  573.         move.w    #10,(bltcmod,a6)
  574.         move.w    #10,(bltbmod,a6)
  575.         move.w    #10,(bltamod,a6)
  576.         move.w    #10,(bltdmod,a6)
  577.         move.l    #$20+4,(bltcpt,a6)
  578.         move.l    #$20+4,(bltbpt,a6)
  579.         move.l    #$20+4,(bltapt,a6)
  580.         move.l    #$20+4,(bltdpt,a6)
  581.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  582.         bsr    _bw
  583.         move.w    #11,(bltcmod,a6)
  584.         move.w    #11,(bltbmod,a6)
  585.         move.w    #11,(bltamod,a6)
  586.         move.w    #11,(bltdmod,a6)
  587.         move.l    #$20+5,(bltcpt,a6)
  588.         move.l    #$20+5,(bltbpt,a6)
  589.         move.l    #$20+5,(bltapt,a6)
  590.         move.l    #$20+5,(bltdpt,a6)
  591.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  592.         bsr    _bw
  593.     ;descending, modulo > -width, upper bound
  594.         move.w    #10,(bltcmod,a6)
  595.         move.w    #10,(bltbmod,a6)
  596.         move.w    #10,(bltamod,a6)
  597.         move.w    #10,(bltdmod,a6)
  598.         move.l    #BASEMEM-2,(bltcpt,a6)
  599.         move.l    #BASEMEM-2,(bltbpt,a6)
  600.         move.l    #BASEMEM-2,(bltapt,a6)
  601.         move.l    #BASEMEM-2,(bltdpt,a6)
  602.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  603.         bsr    _bw
  604.         move.w    #11,(bltcmod,a6)
  605.         move.w    #11,(bltbmod,a6)
  606.         move.w    #11,(bltamod,a6)
  607.         move.w    #11,(bltdmod,a6)
  608.         move.l    #BASEMEM-1,(bltcpt,a6)
  609.         move.l    #BASEMEM-1,(bltbpt,a6)
  610.         move.l    #BASEMEM-1,(bltapt,a6)
  611.         move.l    #BASEMEM-1,(bltdpt,a6)
  612.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  613.         bsr    _bw
  614.     ;descending, modulo == -width, lower bound
  615.         move.w    #-6,(bltcmod,a6)
  616.         move.w    #-6,(bltbmod,a6)
  617.         move.w    #-6,(bltamod,a6)
  618.         move.w    #-6,(bltdmod,a6)
  619.         move.l    #4,(bltcpt,a6)
  620.         move.l    #4,(bltbpt,a6)
  621.         move.l    #4,(bltapt,a6)
  622.         move.l    #4,(bltdpt,a6)
  623.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  624.         bsr    _bw
  625.         move.w    #-6!1,(bltcmod,a6)
  626.         move.w    #-6!1,(bltbmod,a6)
  627.         move.w    #-6!1,(bltamod,a6)
  628.         move.w    #-6!1,(bltdmod,a6)
  629.         move.l    #5,(bltcpt,a6)
  630.         move.l    #5,(bltbpt,a6)
  631.         move.l    #5,(bltapt,a6)
  632.         move.l    #5,(bltdpt,a6)
  633.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  634.         bsr    _bw
  635.     ;descending, modulo == -width, upper bound
  636.         move.w    #-6,(bltcmod,a6)
  637.         move.w    #-6,(bltbmod,a6)
  638.         move.w    #-6,(bltamod,a6)
  639.         move.w    #-6,(bltdmod,a6)
  640.         move.l    #BASEMEM-2,(bltcpt,a6)
  641.         move.l    #BASEMEM-2,(bltbpt,a6)
  642.         move.l    #BASEMEM-2,(bltapt,a6)
  643.         move.l    #BASEMEM-2,(bltdpt,a6)
  644.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  645.         bsr    _bw
  646.         move.w    #-6!1,(bltcmod,a6)
  647.         move.w    #-6!1,(bltbmod,a6)
  648.         move.w    #-6!1,(bltamod,a6)
  649.         move.w    #-6!1,(bltdmod,a6)
  650.         move.l    #BASEMEM-2!1,(bltcpt,a6)
  651.         move.l    #BASEMEM-2!1,(bltbpt,a6)
  652.         move.l    #BASEMEM-2!1,(bltapt,a6)
  653.         move.l    #BASEMEM-2!1,(bltdpt,a6)
  654.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  655.         bsr    _bw
  656.     ;descending, modulo < -width, lower bound
  657.         move.w    #-16-6,(bltcmod,a6)
  658.         move.w    #-16-6,(bltbmod,a6)
  659.         move.w    #-16-6,(bltamod,a6)
  660.         move.w    #-16-6,(bltdmod,a6)
  661.         move.l    #4,(bltcpt,a6)
  662.         move.l    #4,(bltbpt,a6)
  663.         move.l    #4,(bltapt,a6)
  664.         move.l    #4,(bltdpt,a6)
  665.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  666.         bsr    _bw
  667.         move.w    #-16-6!1,(bltcmod,a6)
  668.         move.w    #-16-6!1,(bltbmod,a6)
  669.         move.w    #-16-6!1,(bltamod,a6)
  670.         move.w    #-16-6!1,(bltdmod,a6)
  671.         move.l    #5,(bltcpt,a6)
  672.         move.l    #5,(bltbpt,a6)
  673.         move.l    #5,(bltapt,a6)
  674.         move.l    #5,(bltdpt,a6)
  675.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  676.         bsr    _bw
  677.     ;descending, modulo < -width, upper bound
  678.         move.w    #-16-6,(bltcmod,a6)
  679.         move.w    #-16-6,(bltbmod,a6)
  680.         move.w    #-16-6,(bltamod,a6)
  681.         move.w    #-16-6,(bltdmod,a6)
  682.         move.l    #BASEMEM-$20-2,(bltcpt,a6)
  683.         move.l    #BASEMEM-$20-2,(bltbpt,a6)
  684.         move.l    #BASEMEM-$20-2,(bltapt,a6)
  685.         move.l    #BASEMEM-$20-2,(bltdpt,a6)
  686.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  687.         bsr    _bw
  688.         move.w    #-16-6!1,(bltcmod,a6)
  689.         move.w    #-16-6!1,(bltbmod,a6)
  690.         move.w    #-16-6!1,(bltamod,a6)
  691.         move.w    #-16-6!1,(bltdmod,a6)
  692.         move.l    #BASEMEM-$20-2!1,(bltcpt,a6)
  693.         move.l    #BASEMEM-$20-2!1,(bltbpt,a6)
  694.         move.l    #BASEMEM-$20-2!1,(bltapt,a6)
  695.         move.l    #BASEMEM-$20-2!1,(bltdpt,a6)
  696.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  697.         bsr    _bw
  698.         rts
  699.  
  700.     ;ascending, modulo > -width, lower bound
  701. _bltsiz_1a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  702.         move.w    #%0000100011111111,(bltcon0,a6)
  703.         move.w    #%0000000000000000,(bltcon1,a6)
  704.         move.w    #10,(bltamod,a6)
  705.         move.l    #-1,(bltapt,a6)
  706.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  707.         rts
  708.     ;ascending, modulo > -width, upper bound
  709. _bltsiz_2a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  710.         move.w    #%0000100011111111,(bltcon0,a6)
  711.         move.w    #%0000000000000000,(bltcon1,a6)
  712.         move.w    #10,(bltamod,a6)
  713.         move.l    #BASEMEM-$30+10+2,(bltapt,a6)
  714.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  715.         rts
  716.     ;ascending, modulo == -width, lower bound
  717. _bltsiz_3a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  718.         move.w    #%0000100011111111,(bltcon0,a6)
  719.         move.w    #%0000000000000000,(bltcon1,a6)
  720.         move.w    #-6,(bltamod,a6)
  721.         move.l    #-1,(bltapt,a6)
  722.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  723.         rts
  724.     ;ascending, modulo == -width, upper bound
  725. _bltsiz_4a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  726.         move.w    #%0000100011111111,(bltcon0,a6)
  727.         move.w    #%0000000000000000,(bltcon1,a6)
  728.         move.w    #-6,(bltamod,a6)
  729.         move.l    #BASEMEM-6+2,(bltapt,a6)
  730.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  731.         rts
  732.     ;ascending, modulo < -width, lower bound
  733. _bltsiz_5a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  734.         move.w    #%0000100011111111,(bltcon0,a6)
  735.         move.w    #%0000000000000000,(bltcon1,a6)
  736.         move.w    #-16-6,(bltamod,a6)
  737.         move.l    #$20-2,(bltapt,a6)
  738.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  739.         rts
  740.     ;ascending, modulo < -width, upper bound
  741. _bltsiz_6a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  742.         move.w    #%0000100011111111,(bltcon0,a6)
  743.         move.w    #%0000000000000000,(bltcon1,a6)
  744.         move.w    #-16-6,(bltamod,a6)
  745.         move.l    #BASEMEM-6+2,(bltapt,a6)
  746.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  747.         rts
  748.     ;descending, modulo > -width, lower bound
  749. _bltsiz_7a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  750.         move.w    #%0000100011111111,(bltcon0,a6)
  751.         move.w    #%0000000000000010,(bltcon1,a6)
  752.         move.w    #10,(bltamod,a6)
  753.         move.l    #$20+4-2,(bltapt,a6)
  754.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  755.         rts
  756.     ;descending, modulo > -width, upper bound
  757. _bltsiz_8a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  758.         move.w    #%0000100011111111,(bltcon0,a6)
  759.         move.w    #%0000000000000010,(bltcon1,a6)
  760.         move.w    #10,(bltamod,a6)
  761.         move.l    #BASEMEM-2+2,(bltapt,a6)
  762.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  763.         rts
  764.     ;descending, modulo == -width, lower bound
  765. _bltsiz_9a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  766.         move.w    #%0000100011111111,(bltcon0,a6)
  767.         move.w    #%0000000000000010,(bltcon1,a6)
  768.         move.w    #-6,(bltamod,a6)
  769.         move.l    #4-2,(bltapt,a6)
  770.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  771.         rts
  772.     ;descending, modulo == -width, upper bound
  773. _bltsiz_10a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  774.         move.w    #%0000100011111111,(bltcon0,a6)
  775.         move.w    #%0000000000000010,(bltcon1,a6)
  776.         move.w    #-6,(bltamod,a6)
  777.         move.l    #BASEMEM-2+2,(bltapt,a6)
  778.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  779.         rts
  780.     ;descending, modulo < -width, lower bound
  781. _bltsiz_11a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  782.         move.w    #%0000100011111111,(bltcon0,a6)
  783.         move.w    #%0000000000000010,(bltcon1,a6)
  784.         move.w    #-16-6,(bltamod,a6)
  785.         move.l    #4-2,(bltapt,a6)
  786.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  787.         rts
  788.     ;descending, modulo < -width, upper bound
  789. _bltsiz_12a    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  790.         move.w    #%0000100011111111,(bltcon0,a6)
  791.         move.w    #%0000000000000010,(bltcon1,a6)
  792.         move.w    #-16-6,(bltamod,a6)
  793.         move.l    #BASEMEM-$20-2+2,(bltapt,a6)
  794.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  795.         rts
  796.  
  797.     ;ascending, modulo > -width, lower bound
  798. _bltsiz_1b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  799.         move.w    #%0000010011111111,(bltcon0,a6)
  800.         move.w    #%0000000000000000,(bltcon1,a6)
  801.         move.w    #10,(bltbmod,a6)
  802.         move.l    #-1,(bltbpt,a6)
  803.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  804.         rts
  805.     ;ascending, modulo > -width, upper bound
  806. _bltsiz_2b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  807.         move.w    #%0000010011111111,(bltcon0,a6)
  808.         move.w    #%0000000000000000,(bltcon1,a6)
  809.         move.w    #10,(bltbmod,a6)
  810.         move.l    #BASEMEM-$30+10+2,(bltbpt,a6)
  811.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  812.         rts
  813.     ;ascending, modulo == -width, lower bound
  814. _bltsiz_3b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  815.         move.w    #%0000010011111111,(bltcon0,a6)
  816.         move.w    #%0000000000000000,(bltcon1,a6)
  817.         move.w    #-6,(bltbmod,a6)
  818.         move.l    #-1,(bltbpt,a6)
  819.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  820.         rts
  821.     ;ascending, modulo == -width, upper bound
  822. _bltsiz_4b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  823.         move.w    #%0000010011111111,(bltcon0,a6)
  824.         move.w    #%0000000000000000,(bltcon1,a6)
  825.         move.w    #-6,(bltbmod,a6)
  826.         move.l    #BASEMEM-6+2,(bltbpt,a6)
  827.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  828.         rts
  829.     ;ascending, modulo < -width, lower bound
  830. _bltsiz_5b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  831.         move.w    #%0000010011111111,(bltcon0,a6)
  832.         move.w    #%0000000000000000,(bltcon1,a6)
  833.         move.w    #-16-6,(bltbmod,a6)
  834.         move.l    #$20-2,(bltbpt,a6)
  835.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  836.         rts
  837.     ;ascending, modulo < -width, upper bound
  838. _bltsiz_6b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  839.         move.w    #%0000010011111111,(bltcon0,a6)
  840.         move.w    #%0000000000000000,(bltcon1,a6)
  841.         move.w    #-16-6,(bltbmod,a6)
  842.         move.l    #BASEMEM-6+2,(bltbpt,a6)
  843.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  844.         rts
  845.     ;descending, modulo > -width, lower bound
  846. _bltsiz_7b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  847.         move.w    #%0000010011111111,(bltcon0,a6)
  848.         move.w    #%0000000000000010,(bltcon1,a6)
  849.         move.w    #10,(bltbmod,a6)
  850.         move.l    #$20+4-2,(bltbpt,a6)
  851.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  852.         rts
  853.     ;descending, modulo > -width, upper bound
  854. _bltsiz_8b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  855.         move.w    #%0000010011111111,(bltcon0,a6)
  856.         move.w    #%0000000000000010,(bltcon1,a6)
  857.         move.w    #10,(bltbmod,a6)
  858.         move.l    #BASEMEM-2+2,(bltbpt,a6)
  859.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  860.         rts
  861.     ;descending, modulo == -width, lower bound
  862. _bltsiz_9b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  863.         move.w    #%0000010011111111,(bltcon0,a6)
  864.         move.w    #%0000000000000010,(bltcon1,a6)
  865.         move.w    #-6,(bltbmod,a6)
  866.         move.l    #4-2,(bltbpt,a6)
  867.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  868.         rts
  869.     ;descending, modulo == -width, upper bound
  870. _bltsiz_10b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  871.         move.w    #%0000010011111111,(bltcon0,a6)
  872.         move.w    #%0000000000000010,(bltcon1,a6)
  873.         move.w    #-6,(bltbmod,a6)
  874.         move.l    #BASEMEM-2+2,(bltbpt,a6)
  875.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  876.         rts
  877.     ;descending, modulo < -width, lower bound
  878. _bltsiz_11b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  879.         move.w    #%0000010011111111,(bltcon0,a6)
  880.         move.w    #%0000000000000010,(bltcon1,a6)
  881.         move.w    #-16-6,(bltbmod,a6)
  882.         move.l    #4-2,(bltbpt,a6)
  883.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  884.         rts
  885.     ;descending, modulo < -width, upper bound
  886. _bltsiz_12b    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  887.         move.w    #%0000010011111111,(bltcon0,a6)
  888.         move.w    #%0000000000000010,(bltcon1,a6)
  889.         move.w    #-16-6,(bltbmod,a6)
  890.         move.l    #BASEMEM-$20-2+2,(bltbpt,a6)
  891.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  892.         rts
  893.  
  894.     ;ascending, modulo > -width, lower bound
  895. _bltsiz_1c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  896.         move.w    #%0000001011111111,(bltcon0,a6)
  897.         move.w    #%0000000000000000,(bltcon1,a6)
  898.         move.w    #10,(bltcmod,a6)
  899.         move.l    #-1,(bltcpt,a6)
  900.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  901.         rts
  902.     ;ascending, modulo > -width, upper bound
  903. _bltsiz_2c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  904.         move.w    #%0000001011111111,(bltcon0,a6)
  905.         move.w    #%0000000000000000,(bltcon1,a6)
  906.         move.w    #10,(bltcmod,a6)
  907.         move.l    #BASEMEM-$30+10+2,(bltcpt,a6)
  908.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  909.         rts
  910.     ;ascending, modulo == -width, lower bound
  911. _bltsiz_3c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  912.         move.w    #%0000001011111111,(bltcon0,a6)
  913.         move.w    #%0000000000000000,(bltcon1,a6)
  914.         move.w    #-6,(bltcmod,a6)
  915.         move.l    #-1,(bltcpt,a6)
  916.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  917.         rts
  918.     ;ascending, modulo == -width, upper bound
  919. _bltsiz_4c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  920.         move.w    #%0000001011111111,(bltcon0,a6)
  921.         move.w    #%0000000000000000,(bltcon1,a6)
  922.         move.w    #-6,(bltcmod,a6)
  923.         move.l    #BASEMEM-6+2,(bltcpt,a6)
  924.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  925.         rts
  926.     ;ascending, modulo < -width, lower bound
  927. _bltsiz_5c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  928.         move.w    #%0000001011111111,(bltcon0,a6)
  929.         move.w    #%0000000000000000,(bltcon1,a6)
  930.         move.w    #-16-6,(bltcmod,a6)
  931.         move.l    #$20-2,(bltcpt,a6)
  932.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  933.         rts
  934.     ;ascending, modulo < -width, upper bound
  935. _bltsiz_6c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  936.         move.w    #%0000001011111111,(bltcon0,a6)
  937.         move.w    #%0000000000000000,(bltcon1,a6)
  938.         move.w    #-16-6,(bltcmod,a6)
  939.         move.l    #BASEMEM-6+2,(bltcpt,a6)
  940.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  941.         rts
  942.     ;descending, modulo > -width, lower bound
  943. _bltsiz_7c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  944.         move.w    #%0000001011111111,(bltcon0,a6)
  945.         move.w    #%0000000000000010,(bltcon1,a6)
  946.         move.w    #10,(bltcmod,a6)
  947.         move.l    #$20+4-2,(bltcpt,a6)
  948.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  949.         rts
  950.     ;descending, modulo > -width, upper bound
  951. _bltsiz_8c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  952.         move.w    #%0000001011111111,(bltcon0,a6)
  953.         move.w    #%0000000000000010,(bltcon1,a6)
  954.         move.w    #10,(bltcmod,a6)
  955.         move.l    #BASEMEM-2+2,(bltcpt,a6)
  956.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  957.         rts
  958.     ;descending, modulo == -width, lower bound
  959. _bltsiz_9c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  960.         move.w    #%0000001011111111,(bltcon0,a6)
  961.         move.w    #%0000000000000010,(bltcon1,a6)
  962.         move.w    #-6,(bltcmod,a6)
  963.         move.l    #4-2,(bltcpt,a6)
  964.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  965.         rts
  966.     ;descending, modulo == -width, upper bound
  967. _bltsiz_10c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  968.         move.w    #%0000001011111111,(bltcon0,a6)
  969.         move.w    #%0000000000000010,(bltcon1,a6)
  970.         move.w    #-6,(bltcmod,a6)
  971.         move.l    #BASEMEM-2+2,(bltcpt,a6)
  972.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  973.         rts
  974.     ;descending, modulo < -width, lower bound
  975. _bltsiz_11c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  976.         move.w    #%0000001011111111,(bltcon0,a6)
  977.         move.w    #%0000000000000010,(bltcon1,a6)
  978.         move.w    #-16-6,(bltcmod,a6)
  979.         move.l    #4-2,(bltcpt,a6)
  980.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  981.         rts
  982.     ;descending, modulo < -width, upper bound
  983. _bltsiz_12c    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  984.         move.w    #%0000001011111111,(bltcon0,a6)
  985.         move.w    #%0000000000000010,(bltcon1,a6)
  986.         move.w    #-16-6,(bltcmod,a6)
  987.         move.l    #BASEMEM-$20-2+2,(bltcpt,a6)
  988.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  989.         rts
  990.  
  991.     ;ascending, modulo > -width, lower bound
  992. _bltsiz_1d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  993.         move.w    #%0000000111111111,(bltcon0,a6)
  994.         move.w    #%0000000000000000,(bltcon1,a6)
  995.         move.w    #10,(bltdmod,a6)
  996.         move.l    #-1,(bltdpt,a6)
  997.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  998.         rts
  999.     ;ascending, modulo > -width, upper bound
  1000. _bltsiz_2d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1001.         move.w    #%0000000111111111,(bltcon0,a6)
  1002.         move.w    #%0000000000000000,(bltcon1,a6)
  1003.         move.w    #10,(bltdmod,a6)
  1004.         move.l    #BASEMEM-$30+10+2,(bltdpt,a6)
  1005.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1006.         rts
  1007.     ;ascending, modulo == -width, lower bound
  1008. _bltsiz_3d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1009.         move.w    #%0000000111111111,(bltcon0,a6)
  1010.         move.w    #%0000000000000000,(bltcon1,a6)
  1011.         move.w    #-6,(bltdmod,a6)
  1012.         move.l    #-1,(bltdpt,a6)
  1013.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1014.         rts
  1015.     ;ascending, modulo == -width, upper bound
  1016. _bltsiz_4d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1017.         move.w    #%0000000111111111,(bltcon0,a6)
  1018.         move.w    #%0000000000000000,(bltcon1,a6)
  1019.         move.w    #-6,(bltdmod,a6)
  1020.         move.l    #BASEMEM-6+2,(bltdpt,a6)
  1021.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1022.         rts
  1023.     ;ascending, modulo < -width, lower bound
  1024. _bltsiz_5d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1025.         move.w    #%0000000111111111,(bltcon0,a6)
  1026.         move.w    #%0000000000000000,(bltcon1,a6)
  1027.         move.w    #-16-6,(bltdmod,a6)
  1028.         move.l    #$20-2,(bltdpt,a6)
  1029.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1030.         rts
  1031.     ;ascending, modulo < -width, upper bound
  1032. _bltsiz_6d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1033.         move.w    #%0000000111111111,(bltcon0,a6)
  1034.         move.w    #%0000000000000000,(bltcon1,a6)
  1035.         move.w    #-16-6,(bltdmod,a6)
  1036.         move.l    #BASEMEM-6+2,(bltdpt,a6)
  1037.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1038.         rts
  1039.     ;descending, modulo > -width, lower bound
  1040. _bltsiz_7d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1041.         move.w    #%0000000111111111,(bltcon0,a6)
  1042.         move.w    #%0000000000000010,(bltcon1,a6)
  1043.         move.w    #10,(bltdmod,a6)
  1044.         move.l    #$20+4-2,(bltdpt,a6)
  1045.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1046.         rts
  1047.     ;descending, modulo > -width, upper bound
  1048. _bltsiz_8d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1049.         move.w    #%0000000111111111,(bltcon0,a6)
  1050.         move.w    #%0000000000000010,(bltcon1,a6)
  1051.         move.w    #10,(bltdmod,a6)
  1052.         move.l    #BASEMEM-2+2,(bltdpt,a6)
  1053.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1054.         rts
  1055.     ;descending, modulo == -width, lower bound
  1056. _bltsiz_9d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1057.         move.w    #%0000000111111111,(bltcon0,a6)
  1058.         move.w    #%0000000000000010,(bltcon1,a6)
  1059.         move.w    #-6,(bltdmod,a6)
  1060.         move.l    #4-2,(bltdpt,a6)
  1061.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1062.         rts
  1063.     ;descending, modulo == -width, upper bound
  1064. _bltsiz_10d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1065.         move.w    #%0000000111111111,(bltcon0,a6)
  1066.         move.w    #%0000000000000010,(bltcon1,a6)
  1067.         move.w    #-6,(bltdmod,a6)
  1068.         move.l    #BASEMEM-2+2,(bltdpt,a6)
  1069.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1070.         rts
  1071.     ;descending, modulo < -width, lower bound
  1072. _bltsiz_11d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1073.         move.w    #%0000000111111111,(bltcon0,a6)
  1074.         move.w    #%0000000000000010,(bltcon1,a6)
  1075.         move.w    #-16-6,(bltdmod,a6)
  1076.         move.l    #4-2,(bltdpt,a6)
  1077.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1078.         rts
  1079.     ;descending, modulo < -width, upper bound
  1080. _bltsiz_12d    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1081.         move.w    #%0000000111111111,(bltcon0,a6)
  1082.         move.w    #%0000000000000010,(bltcon1,a6)
  1083.         move.w    #-16-6,(bltdmod,a6)
  1084.         move.l    #BASEMEM-$20-2+2,(bltdpt,a6)
  1085.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1086.         rts
  1087.  
  1088.     ;ascending, modulo > -width, lower bound
  1089. _bltsizprot_0    lea    .1,a3
  1090.         bra    _bltsizprot_ok
  1091. .1        move.w    #2*64+3,(bltsize,a6)        ;2 lines, 3 words
  1092.         rts
  1093. _bltsizprot_1    lea    .1,a3
  1094.         bra    _bltsizprot_ok
  1095. .1        move.l    #$11000000+2*64+3,(bltdpt+2,a6)    ;2 lines, 3 words
  1096.         rts
  1097. _bltsizprot_2    lea    .1,a3
  1098.         bra    _bltsizprot_ok
  1099. .1        move.w    #$1100,d0
  1100.         move.w    #2*64+3,d1
  1101.         move.l    (a7)+,a0
  1102.         bsr    _savreg
  1103.         movem.w    d0-d1,(bltdpt+2,a6)        ;2 lines, 3 words
  1104.         jmp    (a0)
  1105. _bltsizprot_3    lea    .1,a3
  1106.         bra    _bltsizprot_ok
  1107. .1        move.w    #3,(bltsizv,a6)
  1108.         move.w    #2,(bltsizh,a6)
  1109.         rts
  1110. _bltsizprot_4    lea    .1,a3
  1111.         bra    _bltsizprot_ok
  1112. .1        move.l    #$30002,(bltsizv,a6)
  1113.         rts
  1114. _bltsizprot_5    lea    .1,a3
  1115.         bra    _bltsizprot_ok
  1116. .1        move.w    #3,d0
  1117.         move.w    #2,d1
  1118.         move.l    (a7)+,a0
  1119.         bsr    _savreg
  1120.         movem.w    d0-d1,(bltsizv,a6)        ;2 lines, 3 words
  1121.         jmp    (a0)
  1122.  
  1123. _bltsizprot_ok    lea    $1100-4,a2
  1124.         moveq    #4,d0
  1125.         move.l    a2,a0
  1126.         add.l    d0,a2
  1127.         jsr    (resload_ProtectWrite,a4)
  1128.         move.l    #16+6,d0
  1129.         move.l    a2,a0
  1130.         add.l    d0,a2
  1131.         jsr    (resload_ProtectRead,a4)
  1132.         moveq    #4,d0
  1133.         move.l    a2,a0
  1134.         jsr    (resload_ProtectWrite,a4)
  1135.         move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1136.         move.w    #%0000000111111111,(bltcon0,a6)
  1137.         move.w    #%0000000000000000,(bltcon1,a6)
  1138.         move.w    #10,(bltdmod,a6)
  1139.         move.l    #$1100,(bltdpt,a6)
  1140.         bsr    _savreg
  1141.         jsr    (a3)
  1142.         bsr    _chkreg
  1143.         rts
  1144.  
  1145.     ;fail lower bound
  1146. _bltsizprot_20    bsr    _bltsizprot_fl
  1147.         move.w    #2*64+3,(bltsize,a6)        ;2 lines, 3 words
  1148.         rts
  1149. _bltsizprot_21    bsr    _bltsizprot_fl
  1150.         move.l    #$10fe0000+2*64+3,(bltdpt+2,a6)    ;2 lines, 3 words
  1151.         rts
  1152. _bltsizprot_22    bsr    _bltsizprot_fl
  1153.         move.w    #$1100-2,d0
  1154.         move.w    #2*64+3,d1
  1155.         movem.w    d0-d1,(bltdpt+2,a6)        ;2 lines, 3 words
  1156.         rts
  1157. _bltsizprot_23    bsr    _bltsizprot_fl
  1158.         move.w    #3,(bltsizv,a6)
  1159.         move.w    #2,(bltsizh,a6)
  1160.         rts
  1161. _bltsizprot_24    bsr    _bltsizprot_fl
  1162.         move.l    #$30002,(bltsizv,a6)
  1163.         rts
  1164. _bltsizprot_25    bsr    _bltsizprot_fl
  1165.         move.w    #3,d0
  1166.         move.w    #2,d1
  1167.         movem.w    d0-d1,(bltsizv,a6)        ;2 lines, 3 words
  1168.         rts
  1169.  
  1170. _bltsizprot_fl    lea    $1100-4,a2
  1171.         moveq    #4,d0
  1172.         move.l    a2,a0
  1173.         add.l    d0,a2
  1174.         jsr    (resload_ProtectWrite,a4)
  1175.         move.l    #16+6,d0
  1176.         move.l    a2,a0
  1177.         add.l    d0,a2
  1178.         jsr    (resload_ProtectRead,a4)
  1179.         moveq    #4,d0
  1180.         move.l    a2,a0
  1181.         jsr    (resload_ProtectReadWrite,a4)
  1182.         move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1183.         move.w    #%0000000111111111,(bltcon0,a6)
  1184.         move.w    #%0000000000000000,(bltcon1,a6)
  1185.         move.w    #10,(bltdmod,a6)
  1186.         move.l    #$1100-2,(bltdpt,a6)
  1187.         rts
  1188.  
  1189.     ;fail upper bound
  1190. _bltsizprot_40    bsr    _bltsizprot_fu
  1191.         move.w    #2*64+3,(bltsize,a6)        ;2 lines, 3 words
  1192.         rts
  1193. _bltsizprot_41    bsr    _bltsizprot_fu
  1194.         move.l    #$11020000+2*64+3,(bltdpt+2,a6)    ;2 lines, 3 words
  1195.         rts
  1196. _bltsizprot_42    bsr    _bltsizprot_fu
  1197.         move.w    #$1100+2,d0
  1198.         move.w    #2*64+3,d1
  1199.         movem.w    d0-d1,(bltdpt+2,a6)        ;2 lines, 3 words
  1200.         rts
  1201. _bltsizprot_43    bsr    _bltsizprot_fu
  1202.         move.w    #3,(bltsizv,a6)
  1203.         move.w    #2,(bltsizh,a6)
  1204.         rts
  1205. _bltsizprot_44    bsr    _bltsizprot_fu
  1206.         move.l    #$30002,(bltsizv,a6)
  1207.         rts
  1208. _bltsizprot_45    bsr    _bltsizprot_fu
  1209.         move.w    #3,d0
  1210.         move.w    #2,d1
  1211.         movem.w    d0-d1,(bltsizv,a6)        ;2 lines, 3 words
  1212.         rts
  1213.  
  1214. _bltsizprot_fu    lea    $1100-4,a2
  1215.         moveq    #4,d0
  1216.         move.l    a2,a0
  1217.         add.l    d0,a2
  1218.         jsr    (resload_ProtectWrite,a4)
  1219.         move.l    #16+6,d0
  1220.         move.l    a2,a0
  1221.         add.l    d0,a2
  1222.         jsr    (resload_ProtectRead,a4)
  1223.         moveq    #4,d0
  1224.         move.l    a2,a0
  1225.         jsr    (resload_ProtectReadWrite,a4)
  1226.         move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1227.         move.w    #%0000000111111111,(bltcon0,a6)
  1228.         move.w    #%0000000000000000,(bltcon1,a6)
  1229.         move.w    #10,(bltdmod,a6)
  1230.         move.l    #$1100+2,(bltdpt,a6)
  1231.         rts
  1232.  
  1233.     ;descending, modulo > -width, lower bound
  1234. _bltsizprot_d0    lea    $1100-4,a2
  1235.         moveq    #4,d0
  1236.         move.l    a2,a0
  1237.         add.l    d0,a2
  1238.         jsr    (resload_ProtectWrite,a4)
  1239.         move.l    #16+6,d0
  1240.         move.l    a2,a0
  1241.         add.l    d0,a2
  1242.         jsr    (resload_ProtectRead,a4)
  1243.         moveq    #4,d0
  1244.         move.l    a2,a0
  1245.         jsr    (resload_ProtectWrite,a4)
  1246.         move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1247.         move.w    #%0000000111111111,(bltcon0,a6)
  1248.         move.w    #%0000000000000010,(bltcon1,a6)
  1249.         move.w    #10,(bltdmod,a6)
  1250.         move.l    #$1100+16+4,(bltdpt,a6)
  1251.         bsr    _savreg
  1252.         move.w    #2*64+3,(bltsize,a6)        ;2 lines, 3 words
  1253.         bsr    _chkreg
  1254.         rts
  1255. _bltsizprot_d1    lea    $1100-4,a2
  1256.         moveq    #4,d0
  1257.         move.l    a2,a0
  1258.         add.l    d0,a2
  1259.         jsr    (resload_ProtectWrite,a4)
  1260.         move.l    #16+6,d0
  1261.         move.l    a2,a0
  1262.         add.l    d0,a2
  1263.         jsr    (resload_ProtectRead,a4)
  1264.         moveq    #4,d0
  1265.         move.l    a2,a0
  1266.         jsr    (resload_ProtectWrite,a4)
  1267.         move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1268.         move.w    #%0000000111111111,(bltcon0,a6)
  1269.         move.w    #%0000000000000010,(bltcon1,a6)
  1270.         move.w    #10,(bltdmod,a6)
  1271.         move.l    #$1100+16+4-2,(bltdpt,a6)
  1272.         bsr    _savreg
  1273.         move.w    #2*64+3,(bltsize,a6)        ;2 lines, 3 words
  1274.         bsr    _chkreg
  1275.         rts
  1276. _bltsizprot_d2    lea    $1100-4,a2
  1277.         moveq    #4,d0
  1278.         move.l    a2,a0
  1279.         add.l    d0,a2
  1280.         jsr    (resload_ProtectWrite,a4)
  1281.         move.l    #16+6,d0
  1282.         move.l    a2,a0
  1283.         add.l    d0,a2
  1284.         jsr    (resload_ProtectRead,a4)
  1285.         moveq    #4,d0
  1286.         move.l    a2,a0
  1287.         jsr    (resload_ProtectWrite,a4)
  1288.         move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1289.         move.w    #%0000000111111111,(bltcon0,a6)
  1290.         move.w    #%0000000000000010,(bltcon1,a6)
  1291.         move.w    #10,(bltdmod,a6)
  1292.         move.l    #$1100+16+4+2,(bltdpt,a6)
  1293.         bsr    _savreg
  1294.         move.w    #2*64+3,(bltsize,a6)        ;2 lines, 3 words
  1295.         bsr    _chkreg
  1296.         rts
  1297.  
  1298. ;======================================================================
  1299.  
  1300. _bltwait_0    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1301.         move.w    #%0000000111111111,(bltcon0,a6)
  1302.         move.w    #%0000000000000010,(bltcon1,a6)
  1303.         move.w    #-16-6,(bltdmod,a6)
  1304.         move.l    #$1000,(bltdpt,a6)
  1305.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1306.         bsr    _bw
  1307.         sf    (bltcon0l,a6)
  1308.         rts
  1309. _bltwait_1    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1310.         move.w    #%0000000111111111,(bltcon0,a6)
  1311.         move.w    #%0000000000000010,(bltcon1,a6)
  1312.         move.w    #-16-6,(bltdmod,a6)
  1313.         move.l    #$1000,(bltdpt,a6)
  1314.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1315.         sf    (bltcon0l,a6)
  1316.         rts
  1317.  
  1318. _bltwait_3    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1319.         move.w    #%0000000111111111,(bltcon0,a6)
  1320.         move.w    #%0000000000000010,(bltcon1,a6)
  1321.         move.w    #-16-6,(bltdmod,a6)
  1322.         move.l    #$1000,(bltdpt,a6)
  1323.         move.w    #3*64+3,(bltsize,a6)        ;3 lines, 3 words
  1324.         move.w    #0,(bltafwm,a6)
  1325.         rts
  1326. _bltwait_4    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1327.         move.w    #%0000000111111111,(bltcon0,a6)
  1328.         move.w    #%0000000000000010,(bltcon1,a6)
  1329.         move.w    #-16-6,(bltdmod,a6)
  1330.         move.w    #$0000,(bltdpt,a6)
  1331.         move.l    #$10000000+3*64+3,(bltdpt+2,a6)    ;3 lines, 3 words
  1332.         move.w    #0,(bltafwm,a6)
  1333.         rts
  1334. _bltwait_5    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1335.         move.w    #%0000000111111111,(bltcon0,a6)
  1336.         move.w    #%0000000000000010,(bltcon1,a6)
  1337.         move.w    #-16-6,(bltdmod,a6)
  1338.         move.w    #0,d0
  1339.         move.w    #$1000,d1
  1340.         move.w    #3*64+3,d2
  1341.         movem.w    d0-d2,(bltdpt,a6)
  1342.         move.w    #0,(bltafwm,a6)
  1343.         rts
  1344. _bltwait_6    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1345.         move.w    #%0000000111111111,(bltcon0,a6)
  1346.         move.w    #%0000000000000010,(bltcon1,a6)
  1347.         move.w    #-16-6,(bltdmod,a6)
  1348.         move.l    #0,d0
  1349.         move.l    #$10000000+3*64+3,d1
  1350.         movem.l    d0-d1,(bltapt+2,a6)
  1351.         move.w    #0,(bltafwm,a6)
  1352.         rts
  1353.  
  1354. _bltwait_7    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1355.         move.w    #%0000000111111111,(bltcon0,a6)
  1356.         move.w    #%0000000000000010,(bltcon1,a6)
  1357.         move.w    #-16-6,(bltdmod,a6)
  1358.         move.w    #0,d0
  1359.         move.w    #$1000,d1
  1360.         move.w    #3*64+3,d2
  1361.         movem.w    d0-d3,(bltdpt,a6)
  1362.         move.w    #0,(bltafwm,a6)
  1363.         rts
  1364. _bltwait_8    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1365.         move.w    #%0000000111111111,(bltcon0,a6)
  1366.         move.w    #%0000000000000010,(bltcon1,a6)
  1367.         move.w    #-16-6,(bltdmod,a6)
  1368.         move.l    #$1000,d0
  1369.         move.l    #(3*64+3)<<16,d1
  1370.         movem.l    d0-d1,(bltdpt,a6)
  1371.         move.w    #0,(bltafwm,a6)
  1372.         rts
  1373.  
  1374. _bltwait_9    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1375.         move.w    #%0000000111111111,(bltcon0,a6)
  1376.         move.w    #%0000000000000010,(bltcon1,a6)
  1377.         move.w    #-16-6,(bltdmod,a6)
  1378.         move.l    #$1000,(bltdpt,a6)
  1379.         move.w    #3,(bltsizv,a6)
  1380.         move.w    #3,(bltsizh,a6)
  1381.         move.w    #0,(bltafwm,a6)
  1382.         rts
  1383. _bltwait_10    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1384.         move.w    #%0000000111111111,(bltcon0,a6)
  1385.         move.w    #%0000000000000010,(bltcon1,a6)
  1386.         move.w    #-16-6,(bltdmod,a6)
  1387.         move.l    #$1000,(bltdpt,a6)
  1388.         move.l    #$30003,(bltsizv,a6)
  1389.         move.w    #0,(bltafwm,a6)
  1390.         rts
  1391. _bltwait_11    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1392.         move.w    #%0000000111111111,(bltcon0,a6)
  1393.         move.w    #%0000000000000010,(bltcon1,a6)
  1394.         move.w    #-16-6,(bltdmod,a6)
  1395.         move.l    #$1000,(bltdpt,a6)
  1396.         move.w    #3,d0
  1397.         move.w    d0,d1
  1398.         movem.w    d0-d1,(bltsizv,a6)
  1399.         move.w    #0,(bltafwm,a6)
  1400.         rts
  1401.  
  1402. _bltwait_15    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1403.         move.w    #%0000000111111111,(bltcon0,a6)
  1404.         move.w    #%0000000000000010,(bltcon1,a6)
  1405.         move.w    #-16-6,(bltdmod,a6)
  1406.         move.l    #$1000,(bltdpt,a6)
  1407.         moveq    #0,d0
  1408.         move.w    #3,d1
  1409.         move.w    d1,d2
  1410.         movem.w    d0-d2,(bltsize+2,a6)
  1411.         move.w    #0,(bltafwm,a6)
  1412.         rts
  1413. _bltwait_16    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1414.         move.w    #%0000000111111111,(bltcon0,a6)
  1415.         move.w    #%0000000000000010,(bltcon1,a6)
  1416.         move.w    #-16-6,(bltdmod,a6)
  1417.         move.l    #$1000,(bltdpt,a6)
  1418.         move.l    #(3*64+3)<<16,d0
  1419.         move.l    #$30003,d1
  1420.         movem.l    d0-d1,(bltsize,a6)
  1421.         move.w    #0,(bltafwm,a6)
  1422.         rts
  1423.  
  1424. ;======================================================================
  1425.  
  1426. _copcon_0    st    (copcon+1,a6)        ;a bit senseless because byte
  1427.                         ;access is anyway prohibited
  1428.         rts
  1429. _copcon_1    move.w    #-1,(copcon,a6)
  1430.         rts
  1431. _copcon_2    move.l    #-1,(copcon-2,a6)
  1432.         rts
  1433. _copcon_3    move.l    #-1,(copcon,a6)
  1434.         rts
  1435. _copcon_4    move.w    #-1,(copcon,a6)
  1436.         move.l    #-1,(copcon-2,a6)
  1437.         move.l    #-1,(copcon,a6)
  1438.         rts
  1439.  
  1440. ;======================================================================
  1441.  
  1442. _cia_1        bsr    _savreg
  1443.         bchg    #CIAB_LED,_ciaa+ciapra
  1444.         bsr    _chkreg
  1445.         rts
  1446. _cia_2        bclr    #CIAB_OVERLAY,_ciaa+ciapra
  1447.         rts
  1448. _cia_3        bset    #CIAB_OVERLAY,_ciaa+ciapra
  1449.         rts
  1450. _cia_4        bclr    #CIAB_GAMEPORT1,_ciaa+ciaddra
  1451.         rts
  1452. _cia_5        bset    #CIAB_GAMEPORT1,_ciaa+ciaddra
  1453.         rts
  1454. _cia_6        bset    #CIACRBB_ALARM,_ciaa+ciacrb
  1455.         st    _ciaa+ciatodlow
  1456.         rts
  1457. _cia_7        bclr    #CIACRBB_ALARM,_ciaa+ciacrb
  1458.         st    _ciaa+ciatodlow
  1459.         rts
  1460. _cia_8        bset    #CIACRBB_ALARM,_ciaa+ciacrb
  1461.         addq.b    #1,_ciaa+ciatodlow
  1462.         rts
  1463. _cia_9        bsr    _savreg
  1464.         st    _ciaa+ciaicr
  1465.         bsr    _chkreg
  1466.         rts
  1467. _cia_10        bsr    _savreg
  1468.         sf    _ciaa+ciaicr
  1469.         bsr    _chkreg
  1470.         rts
  1471. _cia_11        bsr    _savreg
  1472.         bset    #CIAB_DSKSEL3,_ciab+ciaprb
  1473.         bsr    _chkreg
  1474.         rts
  1475. _cia_12        bsr    _savreg
  1476.         bclr    #CIAB_DSKSEL3,_ciab+ciaprb
  1477.         bsr    _chkreg
  1478.         rts
  1479. _cia_13        bset    #CIAB_COMDTR,_ciab+ciaddra
  1480.         rts
  1481. _cia_14        bclr    #CIAB_COMDTR,_ciab+ciaddra
  1482.         rts
  1483. _cia_15        bset    #CIAB_DSKSEL3,_ciab+ciaddrb
  1484.         rts
  1485. _cia_16        bclr    #CIAB_DSKSEL3,_ciab+ciaddrb
  1486.         rts
  1487. _cia_17        bsr    _savreg
  1488.         st    _ciab+ciaicr
  1489.         bsr    _chkreg
  1490.         rts
  1491. _cia_18        bsr    _savreg
  1492.         sf    _ciab+ciaicr
  1493.         bsr    _chkreg
  1494.         rts
  1495.  
  1496. ;======================================================================
  1497.  
  1498. _cust_1        tst.b    (adkconr,a6)
  1499.         rts
  1500. _cust_2        tst.w    (intreqr,a6)
  1501.         rts
  1502. _cust_3        tst.l    (vposr,a6)
  1503.         rts
  1504. _cust_4        tst.l    (intreqr,a6)
  1505.         rts
  1506. _cust_5        tst.w    (bltcon0,a6)
  1507.         rts
  1508. _cust_8        clr.b    (dmaconr,a6)
  1509.         rts
  1510. _cust_9        clr.w    (dmaconr,a6)
  1511.         rts
  1512. _cust_10    clr.l    (dmaconr,a6)
  1513.         rts
  1514. _cust_14    clr.w    (fmode,a6)
  1515.         rts
  1516. _cust_16    tst.w    (deniseid,a6)
  1517.         rts
  1518. _cust_18    clr.b    (aud0+ac_vol,a6)
  1519.         rts
  1520. _cust_19    clr.b    (aud0+ac_vol+1,a6)
  1521.         rts
  1522.  
  1523. _cust_20    move.l    (a7)+,a0
  1524.         move    #0,sr
  1525.         bsr    _savreg
  1526.         pea    0
  1527.         move.l    (a7)+,(bltapt,a6)
  1528.         bsr    _chkreg
  1529.         jmp    (a0)
  1530. _cust_21    bsr    _savreg
  1531.         pea    0
  1532.         move.l    (a7)+,(bltapt,a6)
  1533.         bsr    _chkreg
  1534.         rts
  1535.  
  1536. _cust_22    move.l    #BASEMEM,(bplpt,a6)
  1537.         rts
  1538. _cust_24    move.w    #(BASEMEM+$1000)>>16,(bplpt+7*4,a6)
  1539.         rts
  1540.  
  1541. _cust_25    move.w    #0,(bplcon0,a6)
  1542.         rts
  1543. _cust_26    move.w    #1,(bplcon0,a6)
  1544.         rts
  1545. _cust_27    move.l    #$10000,(bplcon0,a6)
  1546.         rts
  1547. _cust_28    move.w    #$8000,(bplcon2,a6)
  1548.         rts
  1549. _cust_29    move.l    #$8000,(bplcon1,a6)
  1550.         rts
  1551. _cust_30    move.l    #$00000,(bplcon0-2,a6)
  1552.         rts
  1553.  
  1554. _cust_34    move.w    #DMAF_SETCLR|DMAF_BLITHOG,(dmacon,a6)
  1555.         rts
  1556.  
  1557. _cust_36    move.w    #1,(copcon,a6)
  1558.         rts
  1559. _cust_37    move.l    #1,(copcon-2,a6)
  1560.         rts
  1561. _cust_38    move.l    #$10000,(copcon,a6)
  1562.         rts
  1563.  
  1564. _cust_42    move.w    #3,(bltsizv,a6)
  1565.         rts
  1566. _cust_46    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1567.         move.w    #%0000000111111111,(bltcon0,a6)
  1568.         move.w    #%0000000000000010,(bltcon1,a6)
  1569.         move.w    #-16-6,(bltdmod,a6)
  1570.         move.l    #$1000,(bltdpt,a6)
  1571.         move.w    #3,(bltsizh,a6)
  1572.         rts
  1573. _cust_47    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1574.         move.w    #%0000000111111111,(bltcon0,a6)
  1575.         move.w    #%0000000000000010,(bltcon1,a6)
  1576.         move.w    #-16-6,(bltdmod,a6)
  1577.         move.l    #$1000,(bltdpt,a6)
  1578.         move.l    #(3*64+3)<<16,(bltsize,a6)        ;3 lines, 3 words
  1579.         rts
  1580. _cust_48    move.w    #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
  1581.         move.w    #%0000000111111111,(bltcon0,a6)
  1582.         move.w    #%0000000000000010,(bltcon1,a6)
  1583.         move.w    #-16-6,(bltdmod,a6)
  1584.         move.l    #$1000,(bltdpt,a6)
  1585.         move.w    #3,(bltsizv,a6)
  1586.         move.l    #3<<16,(bltsizh,a6)
  1587.         rts
  1588.  
  1589. ;======================================================================
  1590.  
  1591. COPLC = $5000
  1592.  
  1593. _cop_0        lea    COPLC,a0
  1594.         move.l    a0,(cop1lc,a6)
  1595.         move.l    #$00a41111,(a0)+
  1596.         move.l    #$0100ffff,(a0)+    ;bplcon0
  1597.         move.l    #$0104ffff,(a0)+    ;bplcon2
  1598.         move.l    #BASEMEM-1,d0
  1599.         move.w    #bplpt+2,(a0)+
  1600.         move.w    d0,(a0)+
  1601.         move.w    #bplpt,(a0)+
  1602.         swap    d0
  1603.         move.w    d0,(a0)+
  1604.         move.l    #$0082<<16+COPLC+$1000,(a0)+
  1605.         move.l    #$0088ffff,(a0)+    ;copjmp1
  1606.         move.l    #$02001111,(a0)        ;illegal
  1607.         lea    COPLC+$1000,a0
  1608.         move.l    #$00a41111,(a0)+
  1609.         move.l    #$0086<<16+COPLC+$2000,(a0)+
  1610.         move.l    #$008affff,(a0)+    ;copjmp2
  1611.         move.l    #$02001111,(a0)        ;illegal
  1612.         lea    COPLC+$2000,a0
  1613.         move.l    #$0088ffff,(a0)+    ;copjmp1
  1614.         move.l    #$02001111,(a0)        ;illegal
  1615.         bsr    _savreg
  1616.         move.w    #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
  1617.         bsr    _chkreg
  1618.         rts
  1619.  
  1620. _cop_1        lea    BASEMEM-4,a0
  1621.         move.l    a0,(cop1lc,a6)
  1622.         move.l    #$00401111,(a0)+
  1623.         move.w    #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
  1624.         rts
  1625.  
  1626. _cop_2        lea    COPLC,a0
  1627.         move.l    a0,(cop1lc,a6)
  1628.         move.l    #$02001111,(a0)+
  1629.         move.l    #-2,(a0)+
  1630.         move.w    #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
  1631.         rts
  1632.  
  1633. _cop_3        lea    COPLC,a0
  1634.         move.l    a0,(cop1lc,a6)
  1635.         move.l    #$01000000,(a0)+    ;bplcon0
  1636.         move.l    #-2,(a0)+
  1637.         move.w    #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
  1638.         rts
  1639.  
  1640. _cop_6        lea    COPLC,a0
  1641.         move.l    a0,(cop1lc,a6)
  1642.         move.l    #$01000001,(a0)+    ;bplcon0
  1643.         move.l    #-2,(a0)+
  1644.         move.w    #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
  1645.         rts
  1646.  
  1647. _cop_8        lea    COPLC,a0
  1648.         move.l    a0,(cop1lc,a6)
  1649.         move.l    #$01048000,(a0)+    ;bplcon2
  1650.         move.l    #-2,(a0)+
  1651.         move.w    #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
  1652.         rts
  1653.  
  1654. _cop_10        lea    COPLC,a0
  1655.         move.l    a0,(cop1lc,a6)
  1656.         move.l    #BASEMEM,d0
  1657.         move.w    #bplpt+2,(a0)+
  1658.         move.w    d0,(a0)+
  1659.         move.w    #bplpt,(a0)+
  1660.         swap    d0
  1661.         move.w    d0,(a0)+
  1662.         move.l    #-2,(a0)+
  1663.         move.w    #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
  1664.         rts
  1665.  
  1666. _cop_12        lea    COPLC,a0
  1667.         move.l    a0,(cop1lc,a6)
  1668.         move.l    #-2,(a0)+
  1669.         move.w    #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
  1670.         move.l    a0,a1
  1671.         move.l    #$02001111,(a0)+
  1672.         move.l    #-2,(a0)+
  1673.         move.l    a1,(cop1lc,a6)
  1674.         rts
  1675.  
  1676. _cop_13        lea    COPLC,a0
  1677.         move.l    a0,(cop1lc,a6)
  1678.         move.l    #-2,(a0)+
  1679.         move.w    #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
  1680.         move.l    a0,a1
  1681.         move.l    #$02001111,(a0)+
  1682.         move.l    #-2,(a0)+
  1683.         move.l    a1,(cop2lc,a6)
  1684.         rts
  1685.  
  1686. ;======================================================================
  1687.  
  1688. _af_inst_0    jmp    $a0000000        ;raise instruction stream fault
  1689.  
  1690. ; the following verifies that instructions are valid to execute also
  1691. ; on protected areas
  1692.  
  1693. _af_inst_1    sub.l    a2,a2
  1694.         bra    _af_inst
  1695.  
  1696. _af_inst_2    lea    $1000,a2
  1697.         bra    _af_inst
  1698.  
  1699. ; the handler for the 68030 combines the access on a fault to a longword
  1700. ; which would be outside BASEMEM if BASEMEM-2 is used
  1701.  
  1702. _af_inst_330    lea    BASEMEM-4,a2
  1703.         bra    _af_inst
  1704. _af_inst_360    lea    BASEMEM-2,a2
  1705.         bra    _af_inst
  1706.  
  1707. _af_inst_4    move.l    _expmem,a2
  1708.         bra    _af_inst
  1709.  
  1710. _af_inst_5    move.l    _expmem,a2
  1711.         add.l    #$100,a2
  1712.         bra    _af_inst
  1713.  
  1714. _af_inst_630    move.l    _expmem,a2
  1715.         add.l    #EXPMEM-4,a2
  1716.         bra    _af_inst
  1717. _af_inst_660    move.l    _expmem,a2
  1718.         add.l    #EXPMEM-2,a2
  1719.  
  1720. _af_inst    move.w    #$4e75,(a2)        ;rts
  1721.         jsr    (resload_FlushCache,a4)
  1722.         moveq    #2,d0
  1723.         move.l    a2,a0
  1724.         jsr    (resload_ProtectRead,a4)
  1725.         bsr    _savreg
  1726.         jsr    (a2)            ;must succed
  1727.         bsr    _chkreg
  1728.         clr.w    (a2)            ;must succed
  1729.         bsr    _chkreg
  1730.         tst.w    (a2)            ;must fail
  1731.         rts
  1732.  
  1733. ; that must give address error
  1734.  
  1735. _af_inst_9    jmp    1
  1736.  
  1737. ;======================================================================
  1738.  
  1739. _af_smc_ok    lea    $1000,a2
  1740.         move.w    #$4e75,(a2)        ;rts
  1741.         jsr    (resload_FlushCache,a4)
  1742.         moveq    #4,d0
  1743.         move.l    a2,a0
  1744.         jsr    (resload_ProtectSMC,a4)
  1745.         bsr    _savreg
  1746.         jsr    (a2)
  1747.         bsr    _chkreg
  1748.         clr.l    (a2)
  1749.         bsr    _chkreg
  1750.         tst.l    (a2)
  1751.         bsr    _chkreg
  1752.         rts
  1753.  
  1754. _af_smc_1    lea    $1000,a2
  1755.         move.w    #$4e75,d2        ;rts
  1756.         move.w    d2,(a2)+
  1757.         move.w    d2,(a2)+
  1758.         move.w    d2,(a2)
  1759.         jsr    (resload_FlushCache,a4)
  1760.         moveq    #2,d0
  1761.         lea    (-2,a2),a0
  1762.         jsr    (resload_ProtectSMC,a4)
  1763.         or.w    d2,(a2)
  1764.         or.w    d2,-(a2)
  1765.         or.w    d2,-(a2)
  1766.         jsr    (a2)
  1767.         jsr    (4,a2)
  1768.         jmp    (2,a2)
  1769.  
  1770. _af_smc_ba1    moveq    #4,d0
  1771.         lea    $1000,a0
  1772.         jsr    (resload_ProtectRead,a4)
  1773.         moveq    #4,d0
  1774.         lea    $1000,a0
  1775.         jmp    (resload_ProtectSMC,a4)
  1776. _af_smc_ba2    moveq    #4,d0
  1777.         lea    $1000,a0
  1778.         jsr    (resload_ProtectSMC,a4)
  1779.         moveq    #4,d0
  1780.         lea    $1000,a0
  1781.         jmp    (resload_ProtectRead,a4)
  1782.  
  1783. ;======================================================================
  1784.  
  1785. AF_CBAF_ADR = $1000
  1786.  
  1787. _af_cbaf_0    lea    _af_cbaf_fail,a3
  1788.         bsr    _af_cbaf_init
  1789. .inst        tst.b    (a2)
  1790.         rts
  1791.  
  1792. _af_cbaf_1    lea    .cbaf,a3
  1793.         bsr    _af_cbaf_init
  1794. .inst        tst.b    (a2)
  1795.         rts
  1796. .cbaf        cmp.l    #0,d0
  1797.         bne    _af_cbaf_fail
  1798.         cmp.l    #1,d1
  1799.         bne    _af_cbaf_fail
  1800.         pea    .inst
  1801.         cmp.l    (a7)+,a0
  1802.         bne    _af_cbaf_fail
  1803.         cmp.l    #AF_CBAF_ADR,a1
  1804.         bne    _af_cbaf_fail
  1805.         moveq    #-1,d0
  1806.         rts
  1807.  
  1808. _af_cbaf_2    lea    .cbaf,a3
  1809.         bsr    _af_cbaf_init
  1810. .inst        clr.w    (a2)
  1811.         rts
  1812. .cbaf        cmp.l    #2,d0
  1813.         bne    _af_cbaf_fail
  1814.         cmp.l    #2,d1
  1815.         bne    _af_cbaf_fail
  1816.         pea    .inst
  1817.         cmp.l    (a7)+,a0
  1818.         bne    _af_cbaf_fail
  1819.         cmp.l    #AF_CBAF_ADR,a1
  1820.         bne    _af_cbaf_fail
  1821.         moveq    #-1,d0
  1822.         rts
  1823.  
  1824. _af_cbaf_3    lea    .cbaf,a3
  1825.         bsr    _af_cbaf_init
  1826. .inst        addq.l    #1,(a2)
  1827.         rts
  1828. .cbaf        cmp.l    #1,d0
  1829.         bne    _af_cbaf_fail
  1830.         cmp.l    #4,d1
  1831.         bne    _af_cbaf_fail
  1832.         pea    .inst
  1833.         cmp.l    (a7)+,a0
  1834.         bne    _af_cbaf_fail
  1835.         cmp.l    #AF_CBAF_ADR,a1
  1836.         bne    _af_cbaf_fail
  1837.         moveq    #-1,d0
  1838.         rts
  1839.  
  1840. _af_cbaf_4    lea    .cbaf,a3
  1841.         bsr    _af_cbaf_init
  1842. .inst        tst.b    (a2)
  1843.         rts
  1844. .cbaf        cmp.l    #0,d0
  1845.         bne    _af_cbaf_fail
  1846.         cmp.l    #1,d1
  1847.         bne    _af_cbaf_fail
  1848.         pea    .inst
  1849.         cmp.l    (a7)+,a0
  1850.         bne    _af_cbaf_fail
  1851.         cmp.l    #AF_CBAF_ADR,a1
  1852.         bne    _af_cbaf_fail
  1853.         moveq    #-1,d0
  1854.         rts
  1855.  
  1856. _af_cbaf_5    lea    .cbaf,a3
  1857.         bsr    _af_cbaf_init
  1858. .inst_pre    move.w    #$9876,(a2)
  1859. .inst_post    rts
  1860. .cbaf        movem.l    d0-a7,$100
  1861.         cmp.l    #2,d0
  1862.         bne    _af_cbaf_fail
  1863.         cmp.l    #2,d1
  1864.         bne    _af_cbaf_fail
  1865.         pea    .inst_post
  1866.         cmp.l    (a7)+,a0
  1867.         bne    _af_cbaf_fail
  1868.         cmp.l    #AF_CBAF_ADR,a1
  1869.         bne    _af_cbaf_fail
  1870.         cmp.w    #$9876,(a2)
  1871.         bne    _af_cbaf_fail
  1872.         moveq    #-1,d0
  1873.         rts
  1874.  
  1875. _af_cbaf_6    lea    .cbaf,a3
  1876.         bsr    _af_cbaf_init
  1877. .inst_pre    addq.l    #1,(a2)
  1878. .inst_post    rts
  1879. .cbaf        movem.l    d0-a7,$100
  1880.         cmp.l    #0,d0
  1881.         beq    .read
  1882.         cmp.l    #2,d0
  1883.         bne    _af_cbaf_fail
  1884. .write        cmp.l    #4,d1
  1885.         bne    _af_cbaf_fail
  1886.         pea    .inst_post
  1887.         cmp.l    (a7)+,a0
  1888.         bne    _af_cbaf_fail
  1889.         cmp.l    #AF_CBAF_ADR,a1
  1890.         bne    _af_cbaf_fail
  1891.         cmp.l    #$40414244,(a2)
  1892.         bne    _af_cbaf_fail
  1893.         moveq    #-1,d0
  1894.         rts
  1895. .read        cmp.l    #4,d1
  1896.         bne    _af_cbaf_fail
  1897.         pea    .inst_pre
  1898.         cmp.l    (a7)+,a0
  1899.         bne    _af_cbaf_fail
  1900.         cmp.l    #AF_CBAF_ADR,a1
  1901.         bne    _af_cbaf_fail
  1902.         moveq    #-1,d0
  1903.         rts
  1904.  
  1905. _af_cbaf_fail    moveq    #0,d0
  1906.         rts
  1907.  
  1908. _af_cbaf_init    lea    AF_CBAF_ADR,a2
  1909.         move.l    #$40414243,(a2)        ;test value (68030)
  1910.         moveq    #4,d0
  1911.         move.l    a2,a0
  1912.         jsr    (resload_ProtectReadWrite,a4)
  1913.         clr.l    -(a7)
  1914.         pea    (a3)
  1915.         pea    WHDLTAG_CBAF_SET
  1916.         move.l    a7,a0
  1917.         jsr    (resload_Control,a4)
  1918.         add.w    #12,a7
  1919.         rts
  1920.  
  1921. ;======================================================================
  1922.  
  1923. _af_prot_rlok    lea    $1100,a2
  1924.         moveq    #4,d0
  1925.         move.l    a2,a0
  1926.         jsr    (resload_ProtectRead,a4)
  1927.         moveq    #4,d0
  1928.         lea    (8,a2),a0
  1929.         add.l    d0,a2
  1930.         jsr    (resload_ProtectRead,a4)
  1931.         tst.l    (a2)
  1932.         clr.l    (a2)
  1933.         addq.l    #1,(a2)
  1934.         rts
  1935. _af_prot_wlok    lea    $1100,a2
  1936.         moveq    #4,d0
  1937.         move.l    a2,a0
  1938.         jsr    (resload_ProtectWrite,a4)
  1939.         moveq    #4,d0
  1940.         lea    (8,a2),a0
  1941.         add.l    d0,a2
  1942.         jsr    (resload_ProtectWrite,a4)
  1943.         tst.l    (a2)
  1944.         clr.l    (a2)
  1945.         addq.l    #1,(a2)
  1946.         rts
  1947. _af_prot_rwok    lea    $1100,a2
  1948.         moveq    #2,d0
  1949.         move.l    a2,a0
  1950.         jsr    (resload_ProtectRead,a4)
  1951.         moveq    #2,d0
  1952.         lea    (4,a2),a0
  1953.         add.l    d0,a2
  1954.         jsr    (resload_ProtectRead,a4)
  1955.         tst.w    (a2)
  1956.         clr.w    (a2)
  1957.         addq.w    #1,(a2)
  1958.         rts
  1959. _af_prot_wwok    lea    $1100,a2
  1960.         moveq    #2,d0
  1961.         move.l    a2,a0
  1962.         jsr    (resload_ProtectWrite,a4)
  1963.         moveq    #2,d0
  1964.         lea    (4,a2),a0
  1965.         add.l    d0,a2
  1966.         jsr    (resload_ProtectWrite,a4)
  1967.         tst.w    (a2)
  1968.         clr.w    (a2)
  1969.         addq.w    #1,(a2)
  1970.         rts
  1971. _af_prot_rbok    lea    $1100,a2
  1972.         moveq    #1,d0
  1973.         move.l    a2,a0
  1974.         jsr    (resload_ProtectRead,a4)
  1975.         moveq    #1,d0
  1976.         lea    (2,a2),a0
  1977.         add.l    d0,a2
  1978.         jsr    (resload_ProtectRead,a4)
  1979.         tst.b    (a2)
  1980.         clr.b    (a2)
  1981.         addq.b    #1,(a2)
  1982.         rts
  1983. _af_prot_wbok    lea    $1100,a2
  1984.         moveq    #1,d0
  1985.         move.l    a2,a0
  1986.         jsr    (resload_ProtectWrite,a4)
  1987.         moveq    #1,d0
  1988.         lea    (2,a2),a0
  1989.         add.l    d0,a2
  1990.         jsr    (resload_ProtectWrite,a4)
  1991.         bsr    _savreg
  1992.         tst.b    (a2)
  1993.         clr.b    (a2)
  1994.         addq.b    #1,(a2)
  1995.         bsr    _chkreg
  1996.         rts
  1997.  
  1998. _af_prot_rll    lea    $1100,a2
  1999.         moveq    #4,d0
  2000.         move.l    a2,a0
  2001.         jsr    (resload_ProtectRead,a4)
  2002.         tst.l    (-3,a2)
  2003.         rts
  2004. _af_prot_rlu    lea    $1100,a2
  2005.         moveq    #4,d0
  2006.         move.l    a2,a0
  2007.         jsr    (resload_ProtectRead,a4)
  2008.         tst.l    (3,a2)
  2009.         rts
  2010. _af_prot_wll    lea    $1100,a2
  2011.         moveq    #4,d0
  2012.         move.l    a2,a0
  2013.         jsr    (resload_ProtectWrite,a4)
  2014.         clr.l    (-3,a2)
  2015.         rts
  2016. _af_prot_wlu    lea    $1100,a2
  2017.         moveq    #4,d0
  2018.         move.l    a2,a0
  2019.         jsr    (resload_ProtectWrite,a4)
  2020.         clr.l    (3,a2)
  2021.         rts
  2022. _af_prot_mll    lea    $1100,a2
  2023.         moveq    #4,d0
  2024.         move.l    a2,a0
  2025.         jsr    (resload_ProtectReadWrite,a4)
  2026.         addq.l    #1,(-3,a2)
  2027.         rts
  2028. _af_prot_mlu    lea    $1100,a2
  2029.         moveq    #4,d0
  2030.         move.l    a2,a0
  2031.         jsr    (resload_ProtectReadWrite,a4)
  2032.         addq.l    #1,(3,a2)
  2033.         rts
  2034.  
  2035. _af_prot_rwl    lea    $1100,a2
  2036.         moveq    #4,d0
  2037.         move.l    a2,a0
  2038.         jsr    (resload_ProtectRead,a4)
  2039.         tst.w    (-1,a2)
  2040.         rts
  2041. _af_prot_rwu    lea    $1100,a2
  2042.         moveq    #4,d0
  2043.         move.l    a2,a0
  2044.         jsr    (resload_ProtectRead,a4)
  2045.         tst.w    (3,a2)
  2046.         rts
  2047. _af_prot_wwl    lea    $1100,a2
  2048.         moveq    #4,d0
  2049.         move.l    a2,a0
  2050.         jsr    (resload_ProtectWrite,a4)
  2051.         clr.w    (-1,a2)
  2052.         rts
  2053. _af_prot_wwu    lea    $1100,a2
  2054.         moveq    #4,d0
  2055.         move.l    a2,a0
  2056.         jsr    (resload_ProtectWrite,a4)
  2057.         clr.w    (3,a2)
  2058.         rts
  2059. _af_prot_mwl    lea    $1100,a2
  2060.         moveq    #4,d0
  2061.         move.l    a2,a0
  2062.         jsr    (resload_ProtectReadWrite,a4)
  2063.         addq.w    #1,(-1,a2)
  2064.         rts
  2065. _af_prot_mwu    lea    $1100,a2
  2066.         moveq    #4,d0
  2067.         move.l    a2,a0
  2068.         jsr    (resload_ProtectReadWrite,a4)
  2069.         addq.w    #1,(3,a2)
  2070.         rts
  2071.  
  2072. _af_prot_rbl    lea    $1100,a2
  2073.         moveq    #4,d0
  2074.         move.l    a2,a0
  2075.         jsr    (resload_ProtectRead,a4)
  2076.         tst.b    (a2)
  2077.         rts
  2078. _af_prot_rbu    lea    $1100,a2
  2079.         moveq    #4,d0
  2080.         move.l    a2,a0
  2081.         jsr    (resload_ProtectRead,a4)
  2082.         tst.b    (3,a2)
  2083.         rts
  2084. _af_prot_wbl    lea    $1100,a2
  2085.         moveq    #4,d0
  2086.         move.l    a2,a0
  2087.         jsr    (resload_ProtectWrite,a4)
  2088.         clr.b    (a2)
  2089.         rts
  2090. _af_prot_wbu    lea    $1100,a2
  2091.         moveq    #4,d0
  2092.         move.l    a2,a0
  2093.         jsr    (resload_ProtectWrite,a4)
  2094.         clr.b    (3,a2)
  2095.         rts
  2096. _af_prot_mbl    lea    $1100,a2
  2097.         moveq    #4,d0
  2098.         move.l    a2,a0
  2099.         jsr    (resload_ProtectReadWrite,a4)
  2100.         addq.b    #1,(a2)
  2101.         rts
  2102. _af_prot_mbu    lea    $1100,a2
  2103.         moveq    #4,d0
  2104.         move.l    a2,a0
  2105.         jsr    (resload_ProtectReadWrite,a4)
  2106.         addq.b    #1,(3,a2)
  2107.         rts
  2108.  
  2109. ; cas/tas instruction is always treated as RWM and WriteProtection
  2110. ; will cause also the read to fail, so on 68030 fault will be
  2111. ; always Read
  2112.  
  2113. _af_prot_tas    lea    $1100,a2
  2114.         moveq    #1,d0
  2115.         move.l    a2,a0
  2116.         jsr    (resload_ProtectRead,a4)
  2117.         tas    (a2)
  2118.         rts
  2119. _af_prot_cas    lea    $1100,a2
  2120.         moveq    #4,d0
  2121.         move.l    a2,a0
  2122.         jsr    (resload_ProtectWrite,a4)
  2123.         cas.l    d0,d1,(a2)
  2124.         rts
  2125.  
  2126. ;======================================================================
  2127. ; support functions
  2128. ;
  2129. ; wait for blitter finish
  2130.  
  2131. _bw        BLITWAIT
  2132.         rts
  2133.  
  2134. ; check if registers has been modified
  2135.  
  2136. _savreg        movem.l    d0-a7,SAVREG
  2137.         rts
  2138.  
  2139. _chkreg        movem.l    d0-a7,SAVREG+16*4
  2140.         lea    SAVREG,a0
  2141.         lea    (16*4,a0),a1
  2142.         moveq    #15,d0
  2143. .cmp        cmp.l    (a0)+,(a1)+
  2144.         dbne    d0,.cmp
  2145.         bne    .fail
  2146.         movem.l    (a0),d0-a1
  2147.         rts
  2148. .fail        pea    .failmsg
  2149.         pea    TDREASON_FAILMSG
  2150.         jmp    (resload_Abort,a4)
  2151. .failmsg    dc.b    "registers are modified, check registers",10
  2152.         sprintx    "at $%lx before and $%lx after",SAVREG,SAVREG+16*4
  2153.         dc.b    0
  2154.  
  2155. ;======================================================================
  2156.     
  2157.     
  2158.     IFEQ 1
  2159.     IFEQ MODE-BUS
  2160.  
  2161.     ;ciaa
  2162.     ;    bset    #0,$bfe001        ;overlay
  2163.     ;    bclr    #0,$bfe201        ;overlay
  2164.         move.b    #$83,$bfed01        ;icm
  2165.         bset    #7,$bfef01        ;crb - alarm
  2166.         move.b    #$30,$bfea01        ;msb
  2167.         move.b    #$20,$bfe901
  2168.         move.b    #$10,$bfe801        ;lsb
  2169.     ;    clr.b    $bfeb01            ;non existent
  2170.     ;    clr.b    $bfe000            ;wrong address
  2171.     ;    clr.w    $bfe001            ;wrong size
  2172.     
  2173.     ;ciab
  2174.     ;    bclr    #0,$bfd100        ;step
  2175.     ;    bclr    #7,$bfd100        ;motor
  2176.         move.b    #$84,$bfdd00        ;icm
  2177.         bset    #7,$bfdf00        ;crb - alarm
  2178.         move.b    #$35,$bfda00        ;msb
  2179.         move.b    #$25,$bfd900
  2180.         move.b    #$15,$bfd800        ;lsb
  2181.  
  2182.     ;    move    #$2304,sr
  2183.     ;    move.b    d0,$dff0b8
  2184.     ;    bra    _exit
  2185.  
  2186.     ;blitz
  2187.     ;    moveq    #7,d0
  2188.     ;    movec    d0,sfc
  2189.     ;    movec    d0,dfc
  2190.     ;    moves.w    d0,$100
  2191.     
  2192.     ;    bset    #1,_custom+copjmp1
  2193.     
  2194.     ENDC
  2195.     IFEQ MODE-ILLEGAL
  2196.         lea    $1000,a0
  2197.         movep    (100,a0),d0
  2198.         illegal
  2199.     ENDC
  2200.     IFEQ MODE-ZERO
  2201.         divu    #0,d0
  2202.     ENDC
  2203.     IFEQ MODE-PRIV
  2204.         move    #0,sr
  2205.         move    #100,sr
  2206.     ENDC
  2207.     IFEQ MODE-TRACE
  2208.         or    #$8000,sr
  2209.     ENDC
  2210.     IFEQ MODE-AUTOVEC
  2211.         move.w    #INTF_SETCLR|INTF_INTEN|INTF_VERTB,(intena,a6)
  2212.          move.w    #INTF_VERTB,(intreq,a6)
  2213.          blitz
  2214.     ENDC
  2215.     IFEQ MODE-TRAP
  2216.         trap    #0
  2217.     ENDC
  2218.     IFEQ MODE-FMODE
  2219.         jsr    (resload_CRC16,a0)
  2220.     ENDC
  2221.     IFEQ MODE-BADSSP
  2222.         lea    -20000,a7
  2223.         move.l    $10,a0
  2224.         jmp    (a0)
  2225.     ENDC
  2226.     IFEQ MODE-AGAW
  2227.         lea    $1000,a0
  2228.         move.l    a0,(cop1lc,a6)
  2229.         move.w    #bplcon2,(a0)+
  2230.         move.w    #%000000100000,(a0)+
  2231.         move.l    #-2,(a0)+
  2232.         tst.w    (copjmp1,a6)
  2233.         move.w    #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
  2234.         move.w    #%1111111,(bplcon2,a6)
  2235.         move.w    #0,(clxcon2,a6)
  2236.     ENDC
  2237.     IFEQ MODE-AGAR
  2238.         move.w    (hhposr,a6),d0
  2239.     ENDC
  2240.     IFEQ MODE-SNOOPBPLPT
  2241.         move.l    #0,(bplpt,a6)
  2242.         move.w    #$8,(bplpt,a6)
  2243.         move.w    #$fff,(bplpt+2,a6)
  2244.     ENDC
  2245.     IFEQ MODE-FILE
  2246.         lea    $100,a0
  2247.         lea    $1c00,a1
  2248.         moveq    #0,d0
  2249. .cp        move.l    d0,(a0)+
  2250.         addq.l    #1,d0
  2251.         cmp.l    a0,a1
  2252.         bne    .cp
  2253.  
  2254.         moveq    #0,d0            ;size
  2255.     ;    move.l    #$1000,d0
  2256.         move.l    #$3000,d1        ;offset
  2257.         lea    (.name),a0        ;name
  2258.         lea    $1900,a1        ;source/destination
  2259.     ;    jsr    (resload_LoadFile,a4)
  2260.     ;    jsr    (resload_LoadFileDecrunch,a4)
  2261.         jsr    (resload_LoadFileOffset,a4)
  2262.     ;    jsr    (resload_SaveFile,a4)
  2263.     ;    jsr    (resload_SaveFileOffset,a4)
  2264.         bra    _debug
  2265. .name        dc.b    "fuck:a",0,0
  2266.     ENDC
  2267.  
  2268. ;======================================================================
  2269.  
  2270.     IFEQ MODE-OCLEN
  2271.  
  2272.         lea    ($100),a0
  2273.         moveq    #15,d0
  2274. .clr        clr.l    (a0)+
  2275.         dbf    d0,.clr
  2276.         
  2277.         lea    ($1000),a1    ;A1 = array
  2278.         patch    $24,_trace
  2279.  
  2280.         move.w    #$2700,sr
  2281.  
  2282. _trace        cmp.l    #
  2283.  
  2284.     ENDC
  2285.  
  2286. ;======================================================================
  2287.  
  2288.     IFEQ MODE-OSEMU
  2289.     include    lvo/exec.i
  2290.         move.l    #_LVOAllocMem,-(a7)
  2291.         pea    _exec
  2292.         move.l    #TDREASON_OSEMUFAIL,-(a7)
  2293.         bra    _end
  2294.  
  2295. _exec        dc.b    "exec.library",0
  2296.     EVEN
  2297.     ENDC
  2298.  
  2299. ;======================================================================
  2300.  
  2301.     IFEQ MODE-TAGS
  2302.         move.l    #TDREASON_MUSTNTSC,-(a7)
  2303.         bra    _end
  2304.     
  2305.         clr.l    -(a7)
  2306.         pea    _wb
  2307.         move.l    #WHDLTAG_CBSWITCH_SET,-(a7)
  2308.         move.l    a7,a0
  2309.         jsr    (resload_Control,a4)
  2310.         
  2311.         lea    _dummy,a0
  2312.     ;    jsr    (resload_GetFileSize,a4)
  2313.         
  2314.         bra    _exit
  2315.  
  2316. _wb        blitz
  2317.         jmp    (a0)
  2318. _dummy        dc.b    "dummy",0
  2319.  
  2320.     EVEN
  2321.     ENDC
  2322.  
  2323. ;======================================================================
  2324.  
  2325.     IFEQ MODE-PATCH
  2326.  
  2327.         lea    _p1,a0
  2328.         move.l    #$2000,a1
  2329.         jsr    (resload_PatchSeg,a4)
  2330.         jsr    (resload_Patch,a4)
  2331.  
  2332.         bra    _debug
  2333.  
  2334. _p1        PL_START
  2335.         PL_R    1
  2336.         PL_P    $10,_exit
  2337.         PL_PS    $20,_debug
  2338.         PL_S    $30,16
  2339.         PL_I    $40
  2340.         PL_B    $50,$bb
  2341.         PL_W    $60,$1111
  2342.         PL_L    $70,$33333333
  2343.         PL_A    $80,$800
  2344.         PL_PA    $90,_expmem
  2345.         PL_NOP    $a0,$20
  2346.         PL_PSS    $100,_p1,6
  2347.         PL_NEXT    _p2
  2348.  
  2349. _p2        PL_START
  2350.         PL_PSS    $120,_p2,2
  2351.         PL_STR    $170,<Scheisse!>
  2352.         PL_DATA    $160,.e-.a
  2353. .a        dc.b    1,2,3,4,5
  2354. .e    EVEN
  2355.         PL_AB    $130,$11
  2356.         PL_AW    $140,$1111
  2357.         PL_AL    $150,$11111111
  2358.         PL_R    $80000
  2359.         PL_END
  2360.  
  2361.     ENDC
  2362.  
  2363. ;======================================================================
  2364.  
  2365.     IFEQ MODE-MUSTREG
  2366.         move    #0,sr
  2367.         pea    TDREASON_MUSTREG
  2368.         bra    _end
  2369.     ENDC
  2370.  
  2371. ;======================================================================
  2372.  
  2373.     IFEQ MODE-DELETE
  2374.         lea    _1,a0
  2375.         jsr    (resload_DeleteFile,a4)
  2376.         bra    _exit
  2377. _1        dc.b    "test",0
  2378.         EVEN
  2379.     ENDC
  2380.  
  2381. ;======================================================================
  2382.  
  2383.     IFEQ MODE-CBAF
  2384.  
  2385.         clr.l    -(a7)
  2386.         clr.l    -(a7)
  2387.         move.l    #WHDLTAG_Private4,-(a7)    ;deprotect whdload
  2388.         pea    _1
  2389.         move.l    #WHDLTAG_CBAF_SET,-(a7)
  2390.         move.l    a7,a0
  2391.         jsr    (resload_Control,a4)
  2392.  
  2393.         clr.w    $200000
  2394.  
  2395.         bra    _exit
  2396.  
  2397. _1        cmp.w    #2,d1
  2398.         bne    .2
  2399.         lea    $100,a1        ;address
  2400.         lea    _1,a2        ;data
  2401.         moveq    #1,d0
  2402.         rts
  2403.  
  2404. .2
  2405.  
  2406. .term        moveq    #0,d0
  2407.         rts
  2408.  
  2409.     ENDC
  2410.  
  2411. ;======================================================================
  2412.  
  2413.     IFEQ MODE-RELOC
  2414.  
  2415.         clr.l    -(a7)
  2416.         clr.l    -(a7)
  2417.         move.l    #WHDLTAG_Private4,-(a7)    ;deprotect whdload
  2418.         move.l    a7,a0
  2419.         jsr    (resload_Control,a4)
  2420.         lea    .name,a0
  2421.         lea    $400,a1
  2422.         jsr    (resload_LoadFile,a4)
  2423.         lea    $400,a0
  2424.         lea    .tags,a1
  2425.         jsr    (resload_Relocate,a4)
  2426.  
  2427.         bra    _debug
  2428.  
  2429. .tags    ;    dc.l    WHDLTAG_FASTPTR,$60000
  2430.     ;    dc.l    WHDLTAG_CHIPPTR,$30000
  2431.         dc.l    WHDLTAG_ALIGN,$10000
  2432.         dc.l    0
  2433. .name        dc.b    "c:dms",0
  2434.     EVEN
  2435.     ENDC
  2436.  
  2437. ;======================================================================
  2438.  
  2439.     IFEQ MODE-CACHE
  2440.  
  2441.         move.l    #100,d0
  2442.         moveq    #0,d1
  2443.         lea    $100,a0
  2444.         jsr    (resload_GetCustom,a4)
  2445.  
  2446.  
  2447.         move.l    #CACRF_EnableI,d0
  2448.         move.l    #CACRF_EnableD,d1
  2449.         jsr    (resload_SetCACR,a4)
  2450.  
  2451.         bra    _debug
  2452.  
  2453.     ENDC
  2454.  
  2455. ;======================================================================
  2456.  
  2457.     IFEQ MODE-OVERLAY
  2458.  
  2459.         move.w    #DMAF_SETCLR|DMAF_BLITTER|DMAF_MASTER,_custom+dmacon
  2460.  
  2461.         move.l    #$300,$dff054
  2462.         move.w    #$41,_custom+bltsize
  2463.         bra    _debug
  2464.  
  2465.         moveq    #0,d0
  2466.         moveq    #0,d1
  2467.         move.l    #$41,d2
  2468.  
  2469.         movem.l    d0/d2,$dff052
  2470.     ;    movem.w    d0-d2,$dff054
  2471.  
  2472.     ;opcodes to force fault
  2473.         move.w    #0,_custom+bltcon0
  2474.         move.l    #0,_custom+bltdpt
  2475.         move.w    #$41,_custom+bltsize
  2476.  
  2477.     ;    tst.b    _custom+dmaconr
  2478.  
  2479.         bra    _debug
  2480.  
  2481.         ;------.
  2482.     
  2483.         lea    .1,a0
  2484.         jsr    (resload_GetFileSizeDec,a4)
  2485.         move.l    d0,-(a7)
  2486.         jmp    (resload_Abort,a4)
  2487. .1        dc.b    "bus.rnc",0
  2488.  
  2489.     ;    bset    #0,_ciaa
  2490.     ;    bclr    #0,_ciaa+ciaddra
  2491.  
  2492.     ;    bclr    #CIAB_DSKMOTOR,_ciab+ciaprb
  2493.     ;    bclr    #CIAB_DSKSTEP,_ciab+ciaprb
  2494.     ;    bset    #0,_ciab+ciaddra
  2495.     ;    bclr    #0,_ciab+ciaddrb
  2496.  
  2497.         bset    #CIACRBB_ALARM,(_ciaa+ciacrb)
  2498.         move.b    #$44,_ciaa+ciatodlow
  2499.         
  2500.     ;    move.l    #$100000,_custom+cop1lc
  2501.     
  2502.         move.l    #$2000000,_custom+bplcon0
  2503.  
  2504.         bra    _debug
  2505.  
  2506.     ENDC
  2507.     ENDC
  2508.  
  2509. ;======================================================================
  2510.  
  2511.     END
  2512.